diff --git a/.air.toml b/.air.toml
new file mode 100644
index 00000000..4c5465ee
--- /dev/null
+++ b/.air.toml
@@ -0,0 +1,46 @@
+root = "."
+testdata_dir = "testdata"
+tmp_dir = "tmp"
+
+[build]
+ args_bin = []
+ bin = "./server"
+ cmd = "make build"
+ delay = 1000
+ exclude_dir = [".github", "src/database/migrations"]
+ exclude_file = ["src/database/*.sql.go", "src/database/db.go", "src/database/models.go"]
+ exclude_regex = ["_test.go"]
+ exclude_unchanged = false
+ follow_symlink = false
+ full_bin = ""
+ include_dir = []
+ include_ext = ["go", "sql"]
+ include_file = []
+ kill_delay = "0s"
+ log = "build-errors.log"
+ poll = false
+ poll_interval = 0
+ post_cmd = []
+ pre_cmd = []
+ rerun = false
+ rerun_delay = 500
+ send_interrupt = false
+ stop_on_error = false
+
+[color]
+ app = ""
+ build = "yellow"
+ main = "magenta"
+ runner = "green"
+ watcher = "cyan"
+
+[log]
+ main_only = false
+ time = false
+
+[misc]
+ clean_on_exit = false
+
+[screen]
+ clear_on_rebuild = false
+ keep_scroll = true
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index f6c62bee..00000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,24 +0,0 @@
-module.exports = {
- parser: '@typescript-eslint/parser',
- parserOptions: {
- project: 'tsconfig.json',
- sourceType: 'module',
- },
- plugins: ['@typescript-eslint/eslint-plugin'],
- extends: [
- 'plugin:@typescript-eslint/recommended',
- 'plugin:prettier/recommended',
- ],
- root: true,
- env: {
- node: true,
- jest: true,
- },
- ignorePatterns: ['.eslintrc.js'],
- rules: {
- '@typescript-eslint/interface-name-prefix': 'off',
- '@typescript-eslint/explicit-function-return-type': 'off',
- '@typescript-eslint/explicit-module-boundary-types': 'off',
- '@typescript-eslint/no-explicit-any': 'off',
- },
-};
diff --git a/.github/workflows/go-build.yaml b/.github/workflows/go-build.yaml
new file mode 100644
index 00000000..a54672a0
--- /dev/null
+++ b/.github/workflows/go-build.yaml
@@ -0,0 +1,20 @@
+name: Build
+
+on: push
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: set up go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.21
+
+ - name: sqlc generate
+ run: make sqlc
+
+ - name: build
+ run: make build
\ No newline at end of file
diff --git a/.github/workflows/go-test.yaml b/.github/workflows/go-test.yaml
new file mode 100644
index 00000000..5af2d057
--- /dev/null
+++ b/.github/workflows/go-test.yaml
@@ -0,0 +1,41 @@
+name: Unit Tests
+on: push
+
+jobs:
+ # Label of the runner job
+ runner-job:
+ # You must use a Linux environment when using service containers or container jobs
+ runs-on: ubuntu-latest
+
+ services:
+ postgres:
+ # Docker Hub image
+ image: postgres
+
+ env:
+ POSTGRES_PASSWORD: postgres
+ # Set health checks to wait until postgres has started
+ options: >-
+ --health-cmd pg_isready
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+ ports:
+ - 54322:5432
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: set up go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.21
+
+ - name: sqlc generate
+ run: make sqlc
+
+ - name: build
+ run: make build
+
+ - name: run tests
+ run: make test
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index bee5f2c9..4ae4ed7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,39 +1,8 @@
-# compiled output
-/dist
-/node_modules
+main
+server
+db_config.json
+*tokens.json
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
+typescript
-# OS
-.DS_Store
-
-# Tests
-/coverage
-/.nyc_output
-
-# IDEs and editors
-/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# IDE - VSCode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-
-ormconfig.json
-uploads
-auth-tokens.json
\ No newline at end of file
+tmp
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100644
index dcb72794..00000000
--- a/.prettierrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "singleQuote": true,
- "trailingComma": "all"
-}
\ No newline at end of file
diff --git a/README.md b/README.md
index d567fbde..c89e0fd2 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
-
-
+
@@ -11,88 +10,80 @@
-## Description
-The GiftTrade API repository serves as the REST API for the [giftxtrade.com](https://giftxtrade.com) web app. This repo is designed to work with a fully working MySQL database.
-
-## API endpoints
-| Endpoint | Request Method | Auth | Description |
-| ------------------------------------------ | ------------------------ | ---- | -------------------------------- |
-| `/` | `GET` | no | `n/a` |
-| `/auth/google` | `GET` | no | Redirects to Google oauth endpoint |
-| `/auth/google/redirect` | `GET` | no | Generates a token given the Google oauth callback |
-| `/auth/profile` | `GET` | yes | Given a token, returns the profile details for the authenticated user |
-| `/products` | `GET` | no | Returns a list of products with given a set of query parameters to tune the results |
-| `/events` | `GET`, `POST` | yes | Create and fetch events for an authenticated user |
-| `/events/:id` | `GET`, `PATCH`, `DELETE` | yes | Fetch, update, or delete a specific event for an authenticated user. Updating or deleting an event requires the user to be an event organizer |
-| `/events/get-details/:linkCode` | `GET` | yes | Returns the name and description (if exists) for a specific event |
-| `/events/invites` | `GET` | yes | Returns a list of all pending invites for an authenticated user |
-| `/events/invites/accept/:eventId` | `GET` | yes | Accepts the event invite for an authenticated user |
-| `/events/invites/decline/:eventId` | `GET` | yes | Declines the event invite for an authenticated user |
-| `/events/get-link/:eventId` | `GET` | yes | Generates the invite link to a specific event |
-| `/events/get-link/:eventId` | `GET` | yes | Generates the invite link to a specific event |
-| `/events/verify-invite-code/:inviteCode` | `GET` | yes | Verify the invite code for a specific event |
-| `/events/invite-code/:inviteCode` | `GET` | yes | Add the event to the user's pending invites list |
-| `/participants/manage` | `PATCH`, `DELETE` | yes | Update participant details, or remove them from event. Requires that the participant is also an organizer |
-| `/participants/:eventId/:participantId` | `GET` | yes | Fetch participant information, given the user is part of the same event |
-| `/participants/:participantId` | `PATCH`, `DELETE` | yes | Allows user to manage their participant information, including leaving event, and updating address |
-| `/wishes` | `POST`, `DELETE` | yes | Creates or removes a wishlist item |
-| `/wishes/:id` | `GET` | yes | Fetch all wishlist items from the user participant given an event id |
-| `/wishes/:eventId/:participantId` | `GET` | yes | Fetch all wishlist items from a participant given the participant's id and an event id |
-| `/draws` | `POST` | yes | Creates randomized pairings from the active participants. Requires that user is an organizer |
-| `/draws/confirm/:eventId` | `GET` | yes | Confirms the generated draws and sends emails to all the participants. Requires that user is an organizer |
-| `/draws/:eventId` | `GET` | yes | Fetch all pairings for a given event. Requires that user is an organizer |
-| `/me/:eventId` | `GET` | yes | Fetch user's draw for a given event |
-| `/categories` | `GET` | no | Fetches all product categories |
-
-## Set up
-
-### Clone repository
-```
-git clone git@github.com:giftxtrade/api.git
-```
+## Tech stack
+- [PostgreSQL](https://www.postgresql.org/) - Primary database
+- [GORM](https://gorm.io) - ORM to interact with the database programmatically
+- [Postgres for GORM](https://github.com/go-gorm/postgres) - Postgres Driver for GORM
+- [Google UUID](https://pkg.go.dev/github.com/google/uuid@v1.3.0) - Generates UUID before inserts
+- [Fiber](https://github.com/gofiber/fiber) - Express.js inspired framework for Go (uses [Fasthttp](https://github.com/valyala/fasthttp))
+- [Goth](https://github.com/markbates/goth) - OAuth support for multiple platforms
+- [Goth Fiber](https://github.com/Shareed2k/goth_fiber) - Goth implementation for Fiber
-### Install dependencies
-```
-npm install
-```
+## Instructions
+
+### Set up config files
-### Configure database connection
-This repo requires a working connection with a MySQL database and uses TypeORM to manage models and connections with the database.
+#### `db_config.json`
+This project also uses a PostgreSQL database in order to run. To start, create a file called `db_config.json` in the project root and place the following in the file, replacing all content within the `[]` with the correct database values:
-To set up the config file with the connection details, create a file named `ormconfig.json` in the root of the project directory, then copy the code below, replacing all `<...>` with the appropriate values for you local database.
```json
{
- "type": "mysql",
"host": "localhost",
- "port": 3306,
- "username": "",
- "password": "",
- "database": "",
- "entities": [
- "dist/**/*.entity{.ts,.js}"
- ],
- "synchronize": true
+ "dbName": "[database name]",
+ "username": "[database username]",
+ "password": "[database password]",
+ "port": 5432
+}
+```
+
+***Note:*** All database table and column names are represented in `snake_case`. While all json field names are represented using `camelCase`.
+
+#### `tokens.json`
+
+In addition to the `db_config.json`, you will also need to create a `tokens.json` file which will hold the JWT secret, note that this token should be a randomly generated value and must not be made public. The `token.json` file should contain the following:
+```json
+{
+ "jwtKey": "[YOUR SECRET TOKEN]",
+ "twitter": {
+ "apiKey": "[Twitter OAuth 1.0 API Key]",
+ "apiKeySecret": "[Twitter OAuth 1.0 API Secret]",
+ "bearerToken": "[Twitter OAuth Bearer Token]",
+ "callbackUrl": "http://localhost:8080/auth/twitter/callback"
+ },
+ "google": {
+ "clientId": "[Google Client Id]",
+ "clientSecret": "[Google Secret Key]",
+ "callbackUrl": "http://localhost:8080/auth/google/callback"
+ }
}
```
-### Configure API keys
-GiftTrade API requires a number of API keys from Google, Sendgrid, (and possible from Amazon in the near future). To configure the authentication tokens file, copy `auth-tokens.sample.json` file from the root of the project, then rename the file to `auth-tokens.json`, or use the following command in the terminal:
+### Generate Binary
+
```
-cp auth-tokens.sample.json ./auth-tokens.json
+$ make build
```
-Once `auth-tokens.json` is present, make sure to replace all values with the appropriate values, if working locally, you can leave `FRONTEND_BASE` and `JWT.SECRET` as it is. However, it is essential that at the very least you create an account on [Google Console](https://console.cloud.google.com/) and set up an OAuth key and paste the appropriate keys on the `GOOGLE` section. Do the same for [SendGrid](https://sendgrid.com) and use the free tier to get access to the appropriate API tokens.
-### Start server in watch-mode
+or
+
```
-npm start:dev
+$ go build src/server.go
```
-### Start server
+Creates an executable binary file called `server`. To run this file call `./server`, like so:
+
```
-npm start
+$ ./server
```
-### Build server
+This should start the server on port `8080`.
+
+### Run without Binary
+
+Another way to run the server is by using the `make run` command.
+
```
-npm build
-```
\ No newline at end of file
+$ make run
+```
+
+Running the command should also start the server on port `8080`. This command is equivalent to running `go run src/server.go`.
diff --git a/auth-tokens.sample.json b/auth-tokens.sample.json
deleted file mode 100644
index 5eda7381..00000000
--- a/auth-tokens.sample.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "FRONTEND_BASE": "http://localhost:3000/",
- "JWT": {
- "SECRET": "[YOUR_SECURE_GENERATED_TOKEN]"
- },
- "GOOGLE": {
- "CLIENT_ID": "[GOOGLE_OAUTH_CLIENT_ID]",
- "CLIENT_SECRET": "[GOOGLE_OAUTH_CLIENT_SECRET]"
- },
- "SENDGRID": {
- "API_KEY": "[SENDGRID_API_KEY]"
- }
-}
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..e60151ae
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,34 @@
+version: '3.8'
+services:
+ db:
+ image: postgres:14.1-alpine
+ restart: always
+ environment:
+ - POSTGRES_HOST=postgres
+ - POSTGRES_PORT=5432
+ - POSTGRES_DB=postgres
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+ ports:
+ - '5433:5432'
+ volumes:
+ - giftxtrade-db:/var/lib/postgresql/data
+
+ db-test:
+ image: postgres:14.1-alpine
+ restart: always
+ environment:
+ - POSTGRES_HOST=postgres
+ - POSTGRES_PORT=5432
+ - POSTGRES_DB=postgres
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+ ports:
+ - '54322:5432'
+ volumes:
+ - giftxtrade-db-test:/var/lib/postgresql/data
+volumes:
+ giftxtrade-db:
+ driver: local
+ giftxtrade-db-test:
+ driver: local
diff --git a/go.mod b/go.mod
new file mode 100644
index 00000000..085ef559
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,162 @@
+module github.com/giftxtrade/api
+
+go 1.22
+
+toolchain go1.22.6
+
+require (
+ github.com/ayaanqui/go-migration-tool v1.0.5
+ github.com/go-playground/validator/v10 v10.22.0
+ github.com/gofiber/fiber/v2 v2.51.0
+ github.com/golang-jwt/jwt v3.2.2+incompatible
+ github.com/lib/pq v1.10.9
+ gorm.io/gorm v1.25.5
+)
+
+require (
+ dario.cat/mergo v1.0.0 // indirect
+ filippo.io/edwards25519 v1.1.0 // indirect
+ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
+ github.com/Microsoft/go-winio v0.6.2 // indirect
+ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
+ github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
+ github.com/bep/godartsass v0.16.0 // indirect
+ github.com/bep/golibsass v1.1.0 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cli/safeexec v1.0.0 // indirect
+ github.com/containerd/continuity v0.4.3 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
+ github.com/creack/pty v1.1.18 // indirect
+ github.com/cubicdaiya/gonp v1.0.4 // indirect
+ github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/docker/cli v26.1.4+incompatible // indirect
+ github.com/docker/docker v27.1.1+incompatible // indirect
+ github.com/docker/go-connections v0.5.0 // indirect
+ github.com/docker/go-units v0.5.0 // indirect
+ github.com/dustin/go-humanize v1.0.1 // indirect
+ github.com/fatih/color v1.14.1 // indirect
+ github.com/fatih/structtag v1.2.0 // indirect
+ github.com/fsnotify/fsnotify v1.6.0 // indirect
+ github.com/go-sql-driver/mysql v1.8.1 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/gohugoio/hugo v0.111.3 // indirect
+ github.com/google/cel-go v0.18.2 // indirect
+ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
+ github.com/gosimple/unidecode v1.0.1 // indirect
+ github.com/gzuidhof/tygo v0.2.13 // indirect
+ github.com/inconshreveable/mousetrap v1.1.0 // indirect
+ github.com/jackc/chunkreader/v2 v2.0.1 // indirect
+ github.com/jackc/pgconn v1.14.3 // indirect
+ github.com/jackc/pgio v1.0.0 // indirect
+ github.com/jackc/pgpassfile v1.0.0 // indirect
+ github.com/jackc/pgproto3/v2 v2.3.3 // indirect
+ github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
+ github.com/jackc/pgx/v5 v5.5.1 // indirect
+ github.com/jackc/puddle/v2 v2.2.1 // indirect
+ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
+ github.com/mattn/go-sqlite3 v1.14.18 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
+ github.com/moby/docker-image-spec v1.3.1 // indirect
+ github.com/moby/term v0.5.0 // indirect
+ github.com/opencontainers/go-digest v1.0.0 // indirect
+ github.com/opencontainers/image-spec v1.1.0 // indirect
+ github.com/opencontainers/runc v1.1.13 // indirect
+ github.com/ory/dockertest/v3 v3.11.0 // indirect
+ github.com/pelletier/go-toml v1.9.5 // indirect
+ github.com/pelletier/go-toml/v2 v2.0.6 // indirect
+ github.com/pganalyze/pg_query_go/v4 v4.2.4-0.20231205012101-7463430c7b73 // indirect
+ github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 // indirect
+ github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c // indirect
+ github.com/pingcap/log v1.1.0 // indirect
+ github.com/pingcap/tidb/pkg/parser v0.0.0-20231103154709-4f00ece106b1 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
+ github.com/riza-io/grpc-go v0.2.0 // indirect
+ github.com/russross/blackfriday/v2 v2.1.0 // indirect
+ github.com/sirupsen/logrus v1.9.3 // indirect
+ github.com/spf13/afero v1.9.3 // indirect
+ github.com/spf13/cobra v1.8.0 // indirect
+ github.com/spf13/pflag v1.0.5 // indirect
+ github.com/stoewer/go-strcase v1.2.0 // indirect
+ github.com/stretchr/testify v1.9.0 // indirect
+ github.com/tdewolff/parse/v2 v2.6.5 // indirect
+ github.com/tetratelabs/wazero v1.6.0 // indirect
+ github.com/urfave/cli v1.22.12 // indirect
+ github.com/wasilibs/go-pgquery v0.0.0-20231208014744-de63626a1e99 // indirect
+ github.com/wasilibs/wazerox v0.0.0-20231208014050-e6b725634531 // indirect
+ github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
+ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
+ github.com/xeipuuv/gojsonschema v1.2.0 // indirect
+ go.uber.org/atomic v1.11.0 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ go.uber.org/zap v1.26.0 // indirect
+ golang.org/x/mod v0.13.0 // indirect
+ golang.org/x/sync v0.5.0 // indirect
+ golang.org/x/tools v0.14.0 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect
+ gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
+ gopkg.in/yaml.v2 v2.4.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+ lukechampine.com/uint128 v1.2.0 // indirect
+ modernc.org/cc/v3 v3.40.0 // indirect
+ modernc.org/ccgo/v3 v3.16.13 // indirect
+ modernc.org/libc v1.29.0 // indirect
+ modernc.org/mathutil v1.6.0 // indirect
+ modernc.org/memory v1.7.2 // indirect
+ modernc.org/opt v0.1.3 // indirect
+ modernc.org/sqlite v1.28.0 // indirect
+ modernc.org/strutil v1.2.0 // indirect
+ modernc.org/token v1.0.1 // indirect
+)
+
+require (
+ cloud.google.com/go/compute v1.23.3 // indirect
+ cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ github.com/andybalholm/brotli v1.0.6 // indirect
+ github.com/cosmtrek/air v1.49.0
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.3 // indirect
+ github.com/go-jet/jet/v2 v2.11.1
+ github.com/go-logr/logr v1.3.0 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-playground/locales v0.14.1 // indirect
+ github.com/go-playground/universal-translator v0.18.1 // indirect
+ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
+ github.com/golang/protobuf v1.5.3 // indirect
+ github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/uuid v1.6.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.0 // indirect
+ github.com/gosimple/slug v1.13.1
+ github.com/jinzhu/inflection v1.0.0 // indirect
+ github.com/jinzhu/now v1.1.5 // indirect
+ github.com/klauspost/compress v1.17.4 // indirect
+ github.com/leodido/go-urn v1.4.0 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/rakyll/gotest v0.0.6
+ github.com/rivo/uniseg v0.2.0 // indirect
+ github.com/sqlc-dev/sqlc v1.25.0
+ github.com/valyala/bytebufferpool v1.0.0 // indirect
+ github.com/valyala/fasthttp v1.51.0 // indirect
+ github.com/valyala/tcplisten v1.0.0 // indirect
+ go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
+ go.opentelemetry.io/otel v1.21.0 // indirect
+ go.opentelemetry.io/otel/metric v1.21.0 // indirect
+ go.opentelemetry.io/otel/trace v1.21.0 // indirect
+ golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/exp v0.0.0-20231006140011-7918f672742d
+ golang.org/x/net v0.24.0 // indirect
+ golang.org/x/oauth2 v0.15.0 // indirect
+ golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ google.golang.org/api v0.154.0
+ google.golang.org/appengine v1.6.8 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect
+ google.golang.org/grpc v1.60.1 // indirect
+ google.golang.org/protobuf v1.32.0 // indirect
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 00000000..7b51191b
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,953 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
+cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
+cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
+cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
+cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
+cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
+cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
+cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
+cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
+dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
+dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
+filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
+github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
+github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
+github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
+github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
+github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
+github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
+github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
+github.com/ayaanqui/go-migration-tool v1.0.5 h1:7ukBftAofzoqLSqFlWjq2wkLolxEt3KDW2pf2/vP3qA=
+github.com/ayaanqui/go-migration-tool v1.0.5/go.mod h1:LjP69eoMjKlPehlIbHNRElMRdrbzo+lvx1FWIjLZjXA=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/bep/godartsass v0.16.0 h1:nTpenrZBQjVSjLkCw3AgnYmBB2czauTJa4BLLv448qg=
+github.com/bep/godartsass v0.16.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8=
+github.com/bep/golibsass v1.1.0 h1:pjtXr00IJZZaOdfryNa9wARTB3Q0BmxC3/V1KNcgyTw=
+github.com/bep/golibsass v1.1.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA=
+github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
+github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/cli/safeexec v1.0.0 h1:0VngyaIyqACHdcMNWfo6+KdUYnqEr2Sg+bSP1pdF+dI=
+github.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
+github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8=
+github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ=
+github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/cosmtrek/air v1.49.0 h1:/LfwnLquRoRyUO/K+m/6N5YpUkxcKcDGq2dH7RYbT9c=
+github.com/cosmtrek/air v1.49.0/go.mod h1:yOz9vy7edZ75KRN9+Ofqwm3OU0wuv4Csc+ikMeZxxS8=
+github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM=
+github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
+github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
+github.com/cubicdaiya/gonp v1.0.4 h1:ky2uIAJh81WiLcGKBVD5R7KsM/36W6IqqTy6Bo6rGws=
+github.com/cubicdaiya/gonp v1.0.4/go.mod h1:iWGuP/7+JVTn02OWhRemVbMmG1DOUnmrGTYYACpOI0I=
+github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso=
+github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/docker/cli v26.1.4+incompatible h1:I8PHdc0MtxEADqYJZvhBrW9bo8gawKwwenxRM7/rLu8=
+github.com/docker/cli v26.1.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY=
+github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
+github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
+github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
+github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
+github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w=
+github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg=
+github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
+github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
+github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
+github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
+github.com/friendsofgo/errors v0.9.2/go.mod h1:yCvFW5AkDIL9qn7suHVLiI/gH228n7PC4Pn44IGoTOI=
+github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
+github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
+github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
+github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-jet/jet/v2 v2.10.1 h1:mOKE5S+mt5bM/xNiuD7Dcz+FdqM83zg1FpOzfTJGJNw=
+github.com/go-jet/jet/v2 v2.10.1/go.mod h1:XF5x5l7W4g7S9Rok9aXfPARFUyurl61nc+UNhuxKlYA=
+github.com/go-jet/jet/v2 v2.11.1 h1:SEbh2lRUIiQweJpV0boWsQ4bV13x9p4h+RfajnL6vgM=
+github.com/go-jet/jet/v2 v2.11.1/go.mod h1:+DTofDkGp1c0vpooXWEZyNhyi0k0mL7N2W9tdP4YqfA=
+github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
+github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
+github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
+github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqRRkz6M78GuJAfGE=
+github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao=
+github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
+github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
+github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
+github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
+github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
+github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
+github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
+github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/gohugoio/hugo v0.111.3 h1:m98NJv/5ivJLkQ4u3vPYsrAfBTnDIefZPGhnw/7xW80=
+github.com/gohugoio/hugo v0.111.3/go.mod h1:1gb2es3022plbaNiZjhBTdpXN2cepIeqvBnL/NHnKLY=
+github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/cel-go v0.18.2 h1:L0B6sNBSVmt0OyECi8v6VOS74KOc9W/tLiWKfZABvf4=
+github.com/google/cel-go v0.18.2/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
+github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
+github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
+github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
+github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
+github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
+github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
+github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
+github.com/gosimple/slug v1.13.1 h1:bQ+kpX9Qa6tHRaK+fZR0A0M2Kd7Pa5eHPPsb1JpHD+Q=
+github.com/gosimple/slug v1.13.1/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
+github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
+github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
+github.com/gzuidhof/tygo v0.2.13 h1:aCPwb+N5Oh5pP3HiC/3a3Jwq4QXmMZPhRMCZu927yHg=
+github.com/gzuidhof/tygo v0.2.13/go.mod h1:s3lpnppkDixQQhMWD78yPtAmugMHENsPWpQYziUIpw0=
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
+github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
+github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
+github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
+github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
+github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
+github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE=
+github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s=
+github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
+github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY=
+github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
+github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E=
+github.com/jackc/pgconn v1.14.1 h1:smbxIaZA08n6YuxEX1sDyjV/qkbtUtkH20qLkR9MUR4=
+github.com/jackc/pgconn v1.14.1/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E=
+github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w=
+github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
+github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
+github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
+github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
+github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c=
+github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
+github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
+github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
+github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
+github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
+github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
+github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
+github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
+github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
+github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0=
+github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
+github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
+github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
+github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
+github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
+github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
+github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
+github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM=
+github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
+github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
+github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
+github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
+github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs=
+github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE=
+github.com/jackc/pgx/v5 v5.5.1 h1:5I9etrGkLrN+2XPCsi6XLlV5DITbSL/xBZdmAxFcXPI=
+github.com/jackc/pgx/v5 v5.5.1/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
+github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
+github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
+github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
+github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
+github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
+github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.10.8/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
+github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
+github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
+github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI=
+github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
+github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
+github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
+github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
+github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
+github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
+github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
+github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
+github.com/opencontainers/runc v1.1.13 h1:98S2srgG9vw0zWcDpFMn5TRrh8kLxa/5OFUstuUhmRs=
+github.com/opencontainers/runc v1.1.13/go.mod h1:R016aXacfp/gwQBYw2FDGa9m+n6atbLWrYY8hNMT/sA=
+github.com/ory/dockertest/v3 v3.11.0 h1:OiHcxKAvSDUwsEVh2BjxQQc/5EHz9n0va9awCtNGuyA=
+github.com/ory/dockertest/v3 v3.11.0/go.mod h1:VIPxS1gwT9NpPOrfD3rACs8Y9Z7yhzO4SB194iUDnUI=
+github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
+github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
+github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
+github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
+github.com/pganalyze/pg_query_go/v4 v4.2.4-0.20231205012101-7463430c7b73 h1:vZEujakYrBzd7CWMwqTsDRU7bdRm4Aiu76X9K3P+qtI=
+github.com/pganalyze/pg_query_go/v4 v4.2.4-0.20231205012101-7463430c7b73/go.mod h1:pRJ9rCcWIhDLAzymhH2iY5kEVEfU6UGrL1wBWuO7gmM=
+github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
+github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
+github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 h1:+FZIDR/D97YOPik4N4lPDaUcLDF/EQPogxtlHB2ZZRM=
+github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg=
+github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c h1:CgbKAHto5CQgWM9fSBIvaxsJHuGP0uM74HXtv3MyyGQ=
+github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c/go.mod h1:4qGtCB0QK0wBzKtFEGDhxXnSnbQApw1gc9siScUl8ew=
+github.com/pingcap/log v1.1.0 h1:ELiPxACz7vdo1qAvvaWJg1NrYFoY6gqAh/+Uo6aXdD8=
+github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4=
+github.com/pingcap/tidb/pkg/parser v0.0.0-20231103154709-4f00ece106b1 h1:SwGY3zMnK4wO85vvRIqrR3Yh6VpIC9pydG0QNOUPHCY=
+github.com/pingcap/tidb/pkg/parser v0.0.0-20231103154709-4f00ece106b1/go.mod h1:yRkiqLFwIqibYg2P7h4bclHjHcJiIFRLKhGRyBcKYus=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
+github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rakyll/gotest v0.0.6 h1:hBTqkO3jiuwYW/M9gL4bu0oTYcm8J6knQAAPUsJsz1I=
+github.com/rakyll/gotest v0.0.6/go.mod h1:SkoesdNCWmiD4R2dljIUcfSnNdVZ12y8qK4ojDkc2Sc=
+github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
+github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/riza-io/grpc-go v0.2.0 h1:2HxQKFVE7VuYstcJ8zqpN84VnAoJ4dCL6YFhJewNcHQ=
+github.com/riza-io/grpc-go v0.2.0/go.mod h1:2bDvR9KkKC3KhtlSHfR3dAXjUMT86kg4UfWFyVGWqi8=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
+github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
+github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
+github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
+github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
+github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
+github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk=
+github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
+github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
+github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/sqlc-dev/sqlc v1.25.0 h1:+lI62q7IiLeEwM1tuX5dRmIKi2sdWY5Yd1d93VRRdQw=
+github.com/sqlc-dev/sqlc v1.25.0/go.mod h1:f2/ok8PBTvvf4KPZuofiksVOB0OCKGLWp+wyxTHapp8=
+github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU=
+github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tdewolff/parse/v2 v2.6.5 h1:lYvWBk55GkqKl0JJenGpmrgu/cPHQQ6/Mm1hBGswoGQ=
+github.com/tdewolff/parse/v2 v2.6.5/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs=
+github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
+github.com/tetratelabs/wazero v1.6.0 h1:z0H1iikCdP8t+q341xqepY4EWvHEw8Es7tlqiVzlP3g=
+github.com/tetratelabs/wazero v1.6.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A=
+github.com/urfave/cli v1.22.12 h1:igJgVw1JdKH+trcLWLeLwZjU9fEfPesQ+9/e4MQ44S8=
+github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
+github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
+github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
+github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
+github.com/volatiletech/inflect v0.0.1/go.mod h1:IBti31tG6phkHitLlr5j7shC5SOo//x0AjDzaJU1PLA=
+github.com/volatiletech/null/v8 v8.1.2/go.mod h1:98DbwNoKEpRrYtGjWFctievIfm4n4MxG0A6EBUcoS5g=
+github.com/volatiletech/randomize v0.0.1/go.mod h1:GN3U0QYqfZ9FOJ67bzax1cqZ5q2xuj2mXrXBjWaRTlY=
+github.com/volatiletech/strmangle v0.0.1/go.mod h1:F6RA6IkB5vq0yTG4GQ0UsbbRcl3ni9P76i+JrTBKFFg=
+github.com/wasilibs/go-pgquery v0.0.0-20231208014744-de63626a1e99 h1:HFee1ByN4FrqNVd53Mo28ccGO+g5gxqUV/gdvKMe4b8=
+github.com/wasilibs/go-pgquery v0.0.0-20231208014744-de63626a1e99/go.mod h1:f2JMhFocVxY3VKMd9ykUxMnX4EVew9WOgjnfaNBB6C8=
+github.com/wasilibs/wazerox v0.0.0-20231208014050-e6b725634531 h1:zVJ4SZgaEE9sEH2L9k1+eAvCNa/WAAnT9UiMa3/tQrI=
+github.com/wasilibs/wazerox v0.0.0-20231208014050-e6b725634531/go.mod h1:IQNVyA4d1hWIe23mlMMuqXjyWMdndgSlNx6FqBkwPsM=
+github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
+github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
+github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
+github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
+github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
+github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
+github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
+go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
+go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
+go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
+go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
+go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
+go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
+go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
+go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
+go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
+go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
+go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
+go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
+go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
+go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
+go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
+go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
+golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
+golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
+golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
+golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
+golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
+golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
+golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=
+golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
+golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
+golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc=
+golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
+golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
+google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
+google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
+google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
+google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050=
+google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
+google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
+google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY=
+google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY=
+google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
+google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
+google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
+google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
+google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
+google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI=
+gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
+gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
+gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
+lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
+modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
+modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0=
+modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw=
+modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY=
+modernc.org/libc v1.29.0 h1:tTFRFq69YKCF2QyGNuRUQxKBm1uZZLubf6Cjh/pVHXs=
+modernc.org/libc v1.29.0/go.mod h1:DaG/4Q3LRRdqpiLyP0C2m1B8ZMGkQ+cCgOIjEtQlYhQ=
+modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
+modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
+modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E=
+modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E=
+modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
+modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
+modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ=
+modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0=
+modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
+modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
+modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg=
+modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
diff --git a/makefile b/makefile
new file mode 100644
index 00000000..1fafc181
--- /dev/null
+++ b/makefile
@@ -0,0 +1,29 @@
+sqlc:
+ go run github.com/sqlc-dev/sqlc/cmd/sqlc generate
+
+jet:
+ go run github.com/go-jet/jet/v2/cmd/jet -dsn=postgresql://postgres:postgres@localhost:5433/postgres?sslmode=disable -path=./src/database/jet
+
+create-migration:
+ go run github.com/ayaanqui/go-migration-tool --directory "./src/database/migrations" create-migration $(fileName)
+
+docker-container:
+ docker compose -f ./docker-compose.yml up
+
+build:
+ make sqlc && go build src/server.go
+
+run:
+ make sqlc && go run src/server.go
+
+watch:
+ go run github.com/cosmtrek/air -c .air.toml -- -h
+
+test:
+ make sqlc && go run github.com/rakyll/gotest -v ./src/tests
+
+ts:
+ go run github.com/gzuidhof/tygo generate && go run ts_types/version.go
+
+ts_publish:
+ npm publish --access public
diff --git a/nest-cli.json b/nest-cli.json
deleted file mode 100644
index 56167b36..00000000
--- a/nest-cli.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "collection": "@nestjs/schematics",
- "sourceRoot": "src"
-}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index a28a0c10..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,21200 +0,0 @@
-{
- "name": "api",
- "version": "0.0.1",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "version": "0.0.1",
- "license": "UNLICENSED",
- "dependencies": {
- "@nestjs/common": "^7.6.15",
- "@nestjs/core": "^7.6.15",
- "@nestjs/jwt": "^7.2.0",
- "@nestjs/mapped-types": "*",
- "@nestjs/passport": "^7.1.5",
- "@nestjs/platform-express": "^7.6.15",
- "@nestjs/serve-static": "^2.1.4",
- "@nestjs/typeorm": "^7.1.5",
- "@sendgrid/mail": "^7.4.5",
- "dotenv": "^8.6.0",
- "express-session": "^1.17.2",
- "mysql2": "^2.2.5",
- "passport": "^0.4.1",
- "passport-google-oauth20": "^2.0.0",
- "passport-jwt": "^4.0.0",
- "passport-local": "^1.0.0",
- "passport-twitter": "^0.1.5",
- "randomstring": "^1.2.1",
- "reflect-metadata": "^0.1.13",
- "rimraf": "^3.0.2",
- "rxjs": "^6.6.6",
- "slugify": "^1.6.0",
- "typeorm": "^0.2.34"
- },
- "devDependencies": {
- "@nestjs/cli": "^7.6.0",
- "@nestjs/schematics": "^7.3.0",
- "@nestjs/testing": "^7.6.15",
- "@types/express": "^4.17.11",
- "@types/express-session": "^1.17.3",
- "@types/jest": "^26.0.22",
- "@types/node": "^14.14.36",
- "@types/passport-google-oauth20": "^2.0.8",
- "@types/passport-jwt": "^3.0.5",
- "@types/passport-local": "^1.0.33",
- "@types/supertest": "^2.0.10",
- "@typescript-eslint/eslint-plugin": "^4.19.0",
- "@typescript-eslint/parser": "^4.19.0",
- "eslint": "^7.22.0",
- "eslint-config-prettier": "^8.1.0",
- "eslint-plugin-prettier": "^3.3.1",
- "jest": "^26.6.3",
- "prettier": "^2.2.1",
- "supertest": "^6.1.3",
- "ts-jest": "^26.5.4",
- "ts-loader": "^8.0.18",
- "ts-node": "^9.1.1",
- "tsconfig-paths": "^3.9.0",
- "typescript": "^4.2.3"
- }
- },
- "node_modules/@angular-devkit/core": {
- "version": "11.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.6.tgz",
- "integrity": "sha512-3dA0Z6sIIxCDjZS/DucgmIKti7EZ/LgHoHgCO72Q50H5ZXbUSNBz5wGl5hVq2+gzrnFgU/0u40MIs6eptk30ZA==",
- "dev": true,
- "dependencies": {
- "ajv": "6.12.6",
- "fast-json-stable-stringify": "2.1.0",
- "magic-string": "0.25.7",
- "rxjs": "6.6.3",
- "source-map": "0.7.3"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": "^6.11.0 || ^7.5.6",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@angular-devkit/core/node_modules/rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
- }
- },
- "node_modules/@angular-devkit/core/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/@angular-devkit/schematics": {
- "version": "11.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.6.tgz",
- "integrity": "sha512-bhi2+5xtVAjtr3bsXKT8pnoBamQrArd/Y20ueA4Od7cd38YT97nzTA1wyHBFG0vWd0HMyg42ZS0aycNBuOebaA==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "11.2.6",
- "ora": "5.3.0",
- "rxjs": "6.6.3"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": "^6.11.0 || ^7.5.6",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@angular-devkit/schematics-cli": {
- "version": "0.1102.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-0.1102.6.tgz",
- "integrity": "sha512-86PmafA9mYDeM08cNWHcJCEY1Yqo5aq/YaBzCak93luByDQ4Ao4Jqts9l/xBCZBGUdVrczCNzcdwr/Y/6JPPzA==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "11.2.6",
- "@angular-devkit/schematics": "11.2.6",
- "@schematics/schematics": "0.1102.6",
- "ansi-colors": "4.1.1",
- "inquirer": "7.3.3",
- "minimist": "1.2.5",
- "symbol-observable": "3.0.0"
- },
- "bin": {
- "schematics": "bin/schematics.js"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": "^6.11.0 || ^7.5.6",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@angular-devkit/schematics/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@angular-devkit/schematics/node_modules/ora": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
- "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==",
- "dev": true,
- "dependencies": {
- "bl": "^4.0.3",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "log-symbols": "^4.0.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@angular-devkit/schematics/node_modules/rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
- }
- },
- "node_modules/@angular-devkit/schematics/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.4.tgz",
- "integrity": "sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==",
- "dev": true
- },
- "node_modules/@babel/core": {
- "version": "7.14.3",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz",
- "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.3",
- "@babel/helper-compilation-targets": "^7.13.16",
- "@babel/helper-module-transforms": "^7.14.2",
- "@babel/helpers": "^7.14.0",
- "@babel/parser": "^7.14.3",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.2",
- "@babel/types": "^7.14.2",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.12.13"
- }
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/core/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.14.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz",
- "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.14.2",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- }
- },
- "node_modules/@babel/generator/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz",
- "integrity": "sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.14.4",
- "@babel/helper-validator-option": "^7.12.17",
- "browserslist": "^4.16.6",
- "semver": "^6.3.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.14.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
- "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-get-function-arity": "^7.12.13",
- "@babel/template": "^7.12.13",
- "@babel/types": "^7.14.2"
- }
- },
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
- "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.12.13"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
- "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.13.12"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
- "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.13.12"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.14.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
- "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-imports": "^7.13.12",
- "@babel/helper-replace-supers": "^7.13.12",
- "@babel/helper-simple-access": "^7.13.12",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/helper-validator-identifier": "^7.14.0",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.2",
- "@babel/types": "^7.14.2"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
- "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.12.13"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
- "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==",
- "dev": true
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz",
- "integrity": "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.13.12",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/traverse": "^7.14.2",
- "@babel/types": "^7.14.4"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
- "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.13.12"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
- "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.12.13"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==",
- "dev": true
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.12.17",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
- "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==",
- "dev": true
- },
- "node_modules/@babel/helpers": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
- "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
- "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz",
- "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz",
- "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
- "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@babel/parser": "^7.12.13",
- "@babel/types": "^7.12.13"
- }
- },
- "node_modules/@babel/template/node_modules/@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.12.13"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.14.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
- "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.2",
- "@babel/helper-function-name": "^7.14.2",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.14.2",
- "@babel/types": "^7.14.2",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.12.13"
- }
- },
- "node_modules/@babel/traverse/node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz",
- "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- },
- "node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "node_modules/@cnakazawa/watch": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
- "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
- "dev": true,
- "dependencies": {
- "exec-sh": "^0.3.2",
- "minimist": "^1.2.0"
- },
- "bin": {
- "watch": "cli.js"
- },
- "engines": {
- "node": ">=0.1.95"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz",
- "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
- "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^26.6.2",
- "jest-util": "^26.6.2",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/console/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/core": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
- "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/reporters": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-changed-files": "^26.6.2",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-resolve-dependencies": "^26.6.3",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "jest-watcher": "^26.6.2",
- "micromatch": "^4.0.2",
- "p-each-series": "^2.1.0",
- "rimraf": "^3.0.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/core/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/environment": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
- "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
- "dev": true,
- "dependencies": {
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/fake-timers": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
- "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@sinonjs/fake-timers": "^6.0.1",
- "@types/node": "*",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/globals": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
- "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/types": "^26.6.2",
- "expect": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/reporters": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
- "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
- "dev": true,
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.2",
- "graceful-fs": "^4.2.4",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^4.0.3",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.0.2",
- "jest-haste-map": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "node-notifier": "^8.0.0",
- "slash": "^3.0.0",
- "source-map": "^0.6.0",
- "string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "optionalDependencies": {
- "node-notifier": "^8.0.0"
- }
- },
- "node_modules/@jest/reporters/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/reporters/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@jest/source-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
- "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.4",
- "source-map": "^0.6.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/source-map/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@jest/test-result": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
- "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/test-sequencer": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
- "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
- "dev": true,
- "dependencies": {
- "@jest/test-result": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/transform/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/transform/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/types/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@nestjs/cli": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-7.6.0.tgz",
- "integrity": "sha512-lW1px2gSHkRoBpKSxzP6IJNQscRKs97OAaVyV46OAP6oUR996E0EPkIslIaa16kKLJ3SFOUeZo5xl5nYbqp43g==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "11.2.6",
- "@angular-devkit/schematics": "11.2.6",
- "@angular-devkit/schematics-cli": "0.1102.6",
- "@nestjs/schematics": "^7.3.0",
- "chalk": "3.0.0",
- "chokidar": "3.5.1",
- "cli-table3": "0.5.1",
- "commander": "4.1.1",
- "fork-ts-checker-webpack-plugin": "6.2.0",
- "inquirer": "7.3.3",
- "node-emoji": "1.10.0",
- "ora": "5.4.0",
- "os-name": "4.0.0",
- "rimraf": "3.0.2",
- "shelljs": "0.8.4",
- "tree-kill": "1.2.2",
- "tsconfig-paths": "3.9.0",
- "tsconfig-paths-webpack-plugin": "3.5.1",
- "typescript": "4.2.3",
- "webpack": "5.28.0",
- "webpack-node-externals": "2.5.2"
- },
- "bin": {
- "nest": "bin/nest.js"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": ">= 6.11.0"
- }
- },
- "node_modules/@nestjs/cli/node_modules/@types/estree": {
- "version": "0.0.46",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz",
- "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==",
- "dev": true
- },
- "node_modules/@nestjs/cli/node_modules/acorn": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
- "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/@nestjs/cli/node_modules/enhanced-resolve": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
- "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@nestjs/cli/node_modules/schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/@nestjs/cli/node_modules/tapable": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
- "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@nestjs/cli/node_modules/typescript": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz",
- "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/@nestjs/cli/node_modules/webpack": {
- "version": "5.28.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.28.0.tgz",
- "integrity": "sha512-1xllYVmA4dIvRjHzwELgW4KjIU1fW4PEuEnjsylz7k7H5HgPOctIq7W1jrt3sKH9yG5d72//XWzsHhfoWvsQVg==",
- "dev": true,
- "dependencies": {
- "@types/eslint-scope": "^3.7.0",
- "@types/estree": "^0.0.46",
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/wasm-edit": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0",
- "acorn": "^8.0.4",
- "browserslist": "^4.14.5",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.7.0",
- "es-module-lexer": "^0.4.0",
- "eslint-scope": "^5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.4",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
- "neo-async": "^2.6.2",
- "schema-utils": "^3.0.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.1.1",
- "watchpack": "^2.0.0",
- "webpack-sources": "^2.1.1"
- },
- "bin": {
- "webpack": "bin/webpack.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- }
- }
- },
- "node_modules/@nestjs/common": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-7.6.17.tgz",
- "integrity": "sha512-RHvD32FxfV7yDWX9GPmn0ZSv7ka5kLeVamU5ZpoXSTUjkGqWFt3MTyIP+HUQD2778kDqT+CgEtVJ1fxDG5Oh9g==",
- "dependencies": {
- "axios": "0.21.1",
- "iterare": "1.2.1",
- "tslib": "2.2.0",
- "uuid": "8.3.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
- },
- "peerDependencies": {
- "cache-manager": "*",
- "class-transformer": "*",
- "class-validator": "*",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^6.0.0"
- },
- "peerDependenciesMeta": {
- "cache-manager": {
- "optional": true
- },
- "class-transformer": {
- "optional": true
- },
- "class-validator": {
- "optional": true
- }
- }
- },
- "node_modules/@nestjs/core": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-7.6.17.tgz",
- "integrity": "sha512-dH7PGDj1dvBfOYgxJlxh54vdnFFSLst7+Spg3E7Jpo+n11Ht5Ee5mTjSzXieRVfFba/sI3NIHF/N1stn36bU9w==",
- "hasInstallScript": true,
- "dependencies": {
- "@nuxtjs/opencollective": "0.3.2",
- "fast-safe-stringify": "2.0.7",
- "iterare": "1.2.1",
- "object-hash": "2.1.1",
- "path-to-regexp": "3.2.0",
- "tslib": "2.2.0",
- "uuid": "8.3.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
- },
- "peerDependencies": {
- "@nestjs/common": "^7.0.0",
- "@nestjs/microservices": "^7.0.0",
- "@nestjs/platform-express": "^7.0.0",
- "@nestjs/websockets": "^7.0.0",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^6.0.0"
- },
- "peerDependenciesMeta": {
- "@nestjs/microservices": {
- "optional": true
- },
- "@nestjs/platform-express": {
- "optional": true
- },
- "@nestjs/websockets": {
- "optional": true
- }
- }
- },
- "node_modules/@nestjs/jwt": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-7.2.0.tgz",
- "integrity": "sha512-uOTqYmWNpu+oS/MrdYjrWXtKGV4HkCYmAEVEFPP/KfiP/7K6fNy+boLllE6cnqESAXh9u0CLa1noAAavs+LHEQ==",
- "dependencies": {
- "@types/jsonwebtoken": "8.5.0",
- "jsonwebtoken": "8.5.1"
- },
- "peerDependencies": {
- "@nestjs/common": "^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/@nestjs/mapped-types": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-0.4.1.tgz",
- "integrity": "sha512-JXrw2LMangSU3vnaXWXVX47GRG1FbbNh4aVBbidDjxT3zlghsoNQY6qyWtT001MCl8lJGo8I6i6+DurBRRxl/Q==",
- "peerDependencies": {
- "@nestjs/common": "^7.0.8",
- "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0",
- "class-validator": "^0.11.1 || ^0.12.0 || ^0.13.0",
- "reflect-metadata": "^0.1.12"
- }
- },
- "node_modules/@nestjs/passport": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-7.1.5.tgz",
- "integrity": "sha512-Hu9hPxTdBZA0C4GrWTsSflzwsJ99oAk9jqAwpcszdFNqfjMjkPGuCM9QsVZbBP2bE8fxrVrPsNOILS6puY8e/A==",
- "peerDependencies": {
- "@nestjs/common": "^6.0.0 || ^7.0.0",
- "passport": "^0.4.0"
- }
- },
- "node_modules/@nestjs/platform-express": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-7.6.17.tgz",
- "integrity": "sha512-lyMwx8X/zTXZzxrd6Xn8BEcS/wuFyEgRVk9f15Z29hSaWHd78mUlBXvSnKJpzsN7wTjU8YWbAy/Ig9kIBS6efg==",
- "dependencies": {
- "body-parser": "1.19.0",
- "cors": "2.8.5",
- "express": "4.17.1",
- "multer": "1.4.2",
- "tslib": "2.2.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
- },
- "peerDependencies": {
- "@nestjs/common": "^7.0.0",
- "@nestjs/core": "^7.0.0"
- }
- },
- "node_modules/@nestjs/schematics": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-7.3.1.tgz",
- "integrity": "sha512-eyBjJstAjecpdzRuBLiqnwomwXIAEV3+kPkpaphOieRUM6nBhjnXCCl3Qf8Dul2QUQK4NOVPd8FFxWtGP5XNlg==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "11.2.4",
- "@angular-devkit/schematics": "11.2.4",
- "fs-extra": "9.1.0",
- "jsonc-parser": "3.0.0",
- "pluralize": "8.0.0"
- },
- "peerDependencies": {
- "typescript": "^3.4.5 || ^4.0.0"
- }
- },
- "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": {
- "version": "11.2.4",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.4.tgz",
- "integrity": "sha512-98mGDV4XtKWiQ/2D6yzvOHrnJovXchaAN9AjscAHd2an8Fkiq72d9m2wREpk+2J40NWTDB6J5iesTh3qbi8+CA==",
- "dev": true,
- "dependencies": {
- "ajv": "6.12.6",
- "fast-json-stable-stringify": "2.1.0",
- "magic-string": "0.25.7",
- "rxjs": "6.6.3",
- "source-map": "0.7.3"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": "^6.11.0 || ^7.5.6",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": {
- "version": "11.2.4",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.4.tgz",
- "integrity": "sha512-M9Ike1TYawOIHzenlZS1ufQbsS+Z11/doj5w/UrU0q2OEKc6U375t5qVGgKo3PLHHS8osb9aW9xYwBfVlKrryQ==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "11.2.4",
- "ora": "5.3.0",
- "rxjs": "6.6.3"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": "^6.11.0 || ^7.5.6",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@nestjs/schematics/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@nestjs/schematics/node_modules/ora": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
- "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==",
- "dev": true,
- "dependencies": {
- "bl": "^4.0.3",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "log-symbols": "^4.0.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@nestjs/schematics/node_modules/rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
- }
- },
- "node_modules/@nestjs/schematics/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/@nestjs/serve-static": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-2.1.4.tgz",
- "integrity": "sha512-w2PpLKzQOB8rJ+vMOy28xm8jwE8VjJfA9U+KOm0H0OY62g2oOWJ+OQPSDogP7XxAzZwq+Bt8wNU2oS8+z6v6Zg==",
- "dependencies": {
- "path-to-regexp": "0.1.7"
- },
- "peerDependencies": {
- "@nestjs/common": "^6.0.0 || ^7.0.0",
- "@nestjs/core": "^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/@nestjs/serve-static/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- },
- "node_modules/@nestjs/testing": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-7.6.17.tgz",
- "integrity": "sha512-wWImNvfRapCCtLXMsxCs1Ax2Uj/qSytCnolSEXL7LnH80exwHRmBeLtTfGxArsv9Y1NHr24NarfN6H0QxysZ3g==",
- "dev": true,
- "dependencies": {
- "optional": "0.1.4",
- "tslib": "2.2.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
- },
- "peerDependencies": {
- "@nestjs/common": "^7.0.0",
- "@nestjs/core": "^7.0.0",
- "@nestjs/microservices": "^7.0.0",
- "@nestjs/platform-express": "^7.0.0"
- },
- "peerDependenciesMeta": {
- "@nestjs/microservices": {
- "optional": true
- },
- "@nestjs/platform-express": {
- "optional": true
- }
- }
- },
- "node_modules/@nestjs/typeorm": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-7.1.5.tgz",
- "integrity": "sha512-utE1FkYM/gyCXUqw3zKYYS0YZ3DfkAnzsCx4T48cNnSDTCeWS+u3yt0FMDFjwSiQSaLrzpiSff/FaxJQvRlYow==",
- "dependencies": {
- "uuid": "8.3.1"
- },
- "peerDependencies": {
- "@nestjs/common": "^6.7.0 || ^7.0.0",
- "@nestjs/core": "^6.7.0 || ^7.0.0",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^6.0.0",
- "typeorm": "^0.2.7"
- }
- },
- "node_modules/@nestjs/typeorm/node_modules/uuid": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
- "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz",
- "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nuxtjs/opencollective": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz",
- "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==",
- "dependencies": {
- "chalk": "^4.1.0",
- "consola": "^2.15.0",
- "node-fetch": "^2.6.1"
- },
- "bin": {
- "opencollective": "bin/opencollective.js"
- },
- "engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
- }
- },
- "node_modules/@nuxtjs/opencollective/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@schematics/schematics": {
- "version": "0.1102.6",
- "resolved": "https://registry.npmjs.org/@schematics/schematics/-/schematics-0.1102.6.tgz",
- "integrity": "sha512-x77kbJL/HqR4gx0tbt35VCOGLyMvB7jD/x7eB1njhQRF8E/xynEOk3i+7A5VmK67QP5NJxU8BQKlPkJ55tBDmg==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "11.2.6",
- "@angular-devkit/schematics": "11.2.6"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": "^6.11.0 || ^7.5.6",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@sendgrid/client": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.4.3.tgz",
- "integrity": "sha512-tTaHx893w5iqG0sVtUnMyRchuwYF95k4UOkmov1MouMIeMUbNvbalITo7cG7YSXUTY9rT2t4eBY6HcEBCVeqfg==",
- "dependencies": {
- "@sendgrid/helpers": "^7.4.3",
- "axios": "^0.21.1"
- },
- "engines": {
- "node": "6.* || 8.* || >=10.*"
- }
- },
- "node_modules/@sendgrid/helpers": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.4.3.tgz",
- "integrity": "sha512-Wt+68g1sVEM5UspJh34O/cxtv6BBbtAIk7U9B3PB2ySOtPs9e6hI1QkgYVwpNmkt7k2p86muUNyma/Aig25agg==",
- "dependencies": {
- "deepmerge": "^4.2.2"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/@sendgrid/mail": {
- "version": "7.4.5",
- "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.4.5.tgz",
- "integrity": "sha512-adXMvrTUOlYr7+UTigZRGSYR9vheBv1y4fF2mugn29NBdQMfcQPGLQ5vIHgSAfcboBFCagZdamZqM5FeSGU0Hw==",
- "dependencies": {
- "@sendgrid/client": "^7.4.3",
- "@sendgrid/helpers": "^7.4.3"
- },
- "engines": {
- "node": "6.* || 8.* || >=10.*"
- }
- },
- "node_modules/@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
- "dev": true,
- "dependencies": {
- "type-detect": "4.0.8"
- }
- },
- "node_modules/@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
- "dev": true,
- "dependencies": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "node_modules/@sqltools/formatter": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz",
- "integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@types/babel__core": {
- "version": "7.1.14",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz",
- "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz",
- "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz",
- "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz",
- "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.3.0"
- }
- },
- "node_modules/@types/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
- "dev": true,
- "dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/connect": {
- "version": "3.4.34",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz",
- "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==",
- "dev": true
- },
- "node_modules/@types/eslint": {
- "version": "7.2.13",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz",
- "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==",
- "dev": true,
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/eslint-scope": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz",
- "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==",
- "dev": true,
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
- "node_modules/@types/estree": {
- "version": "0.0.47",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz",
- "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==",
- "dev": true
- },
- "node_modules/@types/express": {
- "version": "4.17.12",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz",
- "integrity": "sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==",
- "dev": true,
- "dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.18",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "node_modules/@types/express-serve-static-core": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz",
- "integrity": "sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*"
- }
- },
- "node_modules/@types/express-session": {
- "version": "1.17.3",
- "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.3.tgz",
- "integrity": "sha512-57DnyxiqClXOIjoCgeKCUYfKxBPOlOY/k+l1TPK+7bSwyiPTrS5FIk1Ycql7twk4wO7P5lfOVy6akDGiaMSLfw==",
- "dev": true,
- "dependencies": {
- "@types/express": "*"
- }
- },
- "node_modules/@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest": {
- "version": "26.0.23",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz",
- "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==",
- "dev": true,
- "dependencies": {
- "jest-diff": "^26.0.0",
- "pretty-format": "^26.0.0"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
- "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
- "dev": true
- },
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
- "dev": true
- },
- "node_modules/@types/jsonwebtoken": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz",
- "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/mime": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
- "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "14.17.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz",
- "integrity": "sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw=="
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
- "dev": true
- },
- "node_modules/@types/oauth": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.1.tgz",
- "integrity": "sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
- "node_modules/@types/passport": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.6.tgz",
- "integrity": "sha512-9oKfrJXuAxvyxdrtMCxKkHgmd6DMO8NDOLvMJ1LvIWd6/xP+i81PAkpTaEca7VhJX9S009RciwZL/j6dsLsHrA==",
- "dev": true,
- "dependencies": {
- "@types/express": "*"
- }
- },
- "node_modules/@types/passport-google-oauth20": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.8.tgz",
- "integrity": "sha512-Lc+DYCCFeMVbodISydQLT6PjIlL0TcLup3HMiJ8RHHHBltArA3oC4qocyQH1OsEq5ovQ19PaKlpGqsNT8NYz1w==",
- "dev": true,
- "dependencies": {
- "@types/express": "*",
- "@types/passport": "*",
- "@types/passport-oauth2": "*"
- }
- },
- "node_modules/@types/passport-jwt": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-3.0.5.tgz",
- "integrity": "sha512-O6zZ4WKzQUwg3OU0MnOA2AIEQ6KfHyGdLoi4fqBLyb+kV7miGKNA2KNJRtiq45EsQ2QEDO8rKqORjXpWV7UJNg==",
- "dev": true,
- "dependencies": {
- "@types/express": "*",
- "@types/jsonwebtoken": "*",
- "@types/passport-strategy": "*"
- }
- },
- "node_modules/@types/passport-local": {
- "version": "1.0.33",
- "resolved": "https://registry.npmjs.org/@types/passport-local/-/passport-local-1.0.33.tgz",
- "integrity": "sha512-+rn6ZIxje0jZ2+DAiWFI8vGG7ZFKB0hXx2cUdMmudSWsigSq6ES7Emso46r4HJk0qCgrZVfI8sJiM7HIYf4SbA==",
- "dev": true,
- "dependencies": {
- "@types/express": "*",
- "@types/passport": "*",
- "@types/passport-strategy": "*"
- }
- },
- "node_modules/@types/passport-oauth2": {
- "version": "1.4.10",
- "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.10.tgz",
- "integrity": "sha512-klShWm9xAqjM3rU31KyMMiB9M8jmJPkStUvCJ/kIv73/Vh3OVnfeTExrkMCM2wA+94MliExqwHVL3J0WD2kbnQ==",
- "dev": true,
- "dependencies": {
- "@types/express": "*",
- "@types/oauth": "*",
- "@types/passport": "*"
- }
- },
- "node_modules/@types/passport-strategy": {
- "version": "0.2.35",
- "resolved": "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.35.tgz",
- "integrity": "sha512-o5D19Jy2XPFoX2rKApykY15et3Apgax00RRLf0RUotPDUsYrQa7x4howLYr9El2mlUApHmCMv5CZ1IXqKFQ2+g==",
- "dev": true,
- "dependencies": {
- "@types/express": "*",
- "@types/passport": "*"
- }
- },
- "node_modules/@types/prettier": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz",
- "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==",
- "dev": true
- },
- "node_modules/@types/qs": {
- "version": "6.9.6",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz",
- "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==",
- "dev": true
- },
- "node_modules/@types/range-parser": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
- "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
- "dev": true
- },
- "node_modules/@types/serve-static": {
- "version": "1.13.9",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz",
- "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==",
- "dev": true,
- "dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
- "node_modules/@types/stack-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
- "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
- "dev": true
- },
- "node_modules/@types/superagent": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.11.tgz",
- "integrity": "sha512-cZkWBXZI+jESnUTp8RDGBmk1Zn2MkScP4V5bjD7DyqB7L0WNWpblh4KX5K/6aTqxFZMhfo1bhi2cwoAEDVBBJw==",
- "dev": true,
- "dependencies": {
- "@types/cookiejar": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/supertest": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz",
- "integrity": "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==",
- "dev": true,
- "dependencies": {
- "@types/superagent": "*"
- }
- },
- "node_modules/@types/validator": {
- "version": "13.1.3",
- "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.3.tgz",
- "integrity": "sha512-DaOWN1zf7j+8nHhqXhIgNmS+ltAC53NXqGxYuBhWqWgqolRhddKzfZU814lkHQSTG0IUfQxU7Cg0gb8fFWo2mA==",
- "peer": true
- },
- "node_modules/@types/yargs": {
- "version": "15.0.13",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
- "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@types/yargs-parser": {
- "version": "20.2.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
- "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
- "dev": true
- },
- "node_modules/@types/zen-observable": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.2.tgz",
- "integrity": "sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg=="
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.1.tgz",
- "integrity": "sha512-aoIusj/8CR+xDWmZxARivZjbMBQTT9dImUtdZ8tVCVRXgBUuuZyM5Of5A9D9arQPxbi/0rlJLcuArclz/rCMJw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/experimental-utils": "4.26.1",
- "@typescript-eslint/scope-manager": "4.26.1",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "lodash": "^4.17.21",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^4.0.0",
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/experimental-utils": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.1.tgz",
- "integrity": "sha512-sQHBugRhrXzRCs9PaGg6rowie4i8s/iD/DpTB+EXte8OMDfdCG5TvO73XlO9Wc/zi0uyN4qOmX9hIjQEyhnbmQ==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.26.1",
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/typescript-estree": "4.26.1",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- }
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.26.1.tgz",
- "integrity": "sha512-q7F3zSo/nU6YJpPJvQveVlIIzx9/wu75lr6oDbDzoeIRWxpoc/HQ43G4rmMoCc5my/3uSj2VEpg/D83LYZF5HQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/scope-manager": "4.26.1",
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/typescript-estree": "4.26.1",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.26.1.tgz",
- "integrity": "sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/visitor-keys": "4.26.1"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.26.1.tgz",
- "integrity": "sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg==",
- "dev": true,
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.1.tgz",
- "integrity": "sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/visitor-keys": "4.26.1",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.1.tgz",
- "integrity": "sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "4.26.1",
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@webassemblyjs/ast": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz",
- "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0"
- }
- },
- "node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz",
- "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz",
- "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz",
- "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-numbers": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz",
- "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.0",
- "@webassemblyjs/helper-api-error": "1.11.0",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz",
- "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz",
- "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-buffer": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/wasm-gen": "1.11.0"
- }
- },
- "node_modules/@webassemblyjs/ieee754": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz",
- "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==",
- "dev": true,
- "dependencies": {
- "@xtuc/ieee754": "^1.2.0"
- }
- },
- "node_modules/@webassemblyjs/leb128": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz",
- "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==",
- "dev": true,
- "dependencies": {
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/utf8": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz",
- "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==",
- "dev": true
- },
- "node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz",
- "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-buffer": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/helper-wasm-section": "1.11.0",
- "@webassemblyjs/wasm-gen": "1.11.0",
- "@webassemblyjs/wasm-opt": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0",
- "@webassemblyjs/wast-printer": "1.11.0"
- }
- },
- "node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz",
- "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/ieee754": "1.11.0",
- "@webassemblyjs/leb128": "1.11.0",
- "@webassemblyjs/utf8": "1.11.0"
- }
- },
- "node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz",
- "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-buffer": "1.11.0",
- "@webassemblyjs/wasm-gen": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0"
- }
- },
- "node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz",
- "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-api-error": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/ieee754": "1.11.0",
- "@webassemblyjs/leb128": "1.11.0",
- "@webassemblyjs/utf8": "1.11.0"
- }
- },
- "node_modules/@webassemblyjs/wast-printer": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz",
- "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.11.0",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
- },
- "node_modules/@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
- },
- "node_modules/abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
- "dev": true
- },
- "node_modules/accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
- "dependencies": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "dev": true,
- "dependencies": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
- "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
- },
- "node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/app-root-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz",
- "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==",
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/append-field": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
- "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
- },
- "node_modules/arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array-uniq": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz",
- "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "dependencies": {
- "follow-redirects": "^1.10.0"
- }
- },
- "node_modules/babel-jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
- "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
- "dev": true,
- "dependencies": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-jest/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/babel-plugin-istanbul": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
- "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^4.0.0",
- "test-exclude": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
- "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-preset-jest": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
- "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
- "dev": true,
- "dependencies": {
- "babel-plugin-jest-hoist": "^26.6.2",
- "babel-preset-current-node-syntax": "^1.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/base64url": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
- "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dev": true,
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bl/node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bl/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/bl/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
- "dependencies": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
- "dev": true
- },
- "node_modules/browserslist": {
- "version": "4.16.6",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
- "dev": true,
- "dependencies": {
- "caniuse-lite": "^1.0.30001219",
- "colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.71"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
- },
- "node_modules/bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
- "dependencies": {
- "fast-json-stable-stringify": "2.x"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "dependencies": {
- "node-int64": "^0.4.0"
- }
- },
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
- "node_modules/buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
- },
- "node_modules/busboy": {
- "version": "0.2.14",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
- "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
- "dependencies": {
- "dicer": "0.2.5",
- "readable-stream": "1.1.x"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001235",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz",
- "integrity": "sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
- },
- "node_modules/capture-exit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
- "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
- "dev": true,
- "dependencies": {
- "rsvp": "^4.8.4"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "node_modules/chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "dev": true,
- "dependencies": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.3.1",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.1"
- }
- },
- "node_modules/chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true,
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "node_modules/cjs-module-lexer": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
- "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
- "dev": true
- },
- "node_modules/class-transformer": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz",
- "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==",
- "peer": true
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-validator": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz",
- "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==",
- "peer": true,
- "dependencies": {
- "@types/validator": "^13.1.3",
- "libphonenumber-js": "^1.9.7",
- "validator": "^13.5.2"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-highlight": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz",
- "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
- "dependencies": {
- "chalk": "^4.0.0",
- "highlight.js": "^10.7.1",
- "mz": "^2.4.0",
- "parse5": "^5.1.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.0",
- "yargs": "^16.0.0"
- },
- "bin": {
- "highlight": "bin/highlight"
- },
- "engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
- }
- },
- "node_modules/cli-highlight/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/cli-highlight/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/cli-highlight/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-highlight/node_modules/parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
- },
- "node_modules/cli-highlight/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-highlight/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/cli-highlight/node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cli-highlight/node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cli-spinners": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz",
- "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-table3": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz",
- "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==",
- "dev": true,
- "dependencies": {
- "colors": "^1.1.2",
- "object-assign": "^4.1.0",
- "string-width": "^2.1.1"
- },
- "engines": {
- "node": ">=6"
- },
- "optionalDependencies": {
- "colors": "^1.1.2"
- }
- },
- "node_modules/cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true,
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/colorette": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
- "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
- "dev": true
- },
- "node_modules/colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/concat-stream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "node_modules/concat-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/concat-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/consola": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
- "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
- },
- "node_modules/content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
- },
- "node_modules/cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
- "dev": true
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "node_modules/cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
- "dev": true,
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.7.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
- "dev": true
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dev": true,
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- },
- "node_modules/data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decimal.js": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
- "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==",
- "dev": true
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "node_modules/deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/defaults": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "dev": true,
- "dependencies": {
- "clone": "^1.0.2"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/denque": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
- "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
- },
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dicer": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
- "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
- "dependencies": {
- "readable-stream": "1.1.x",
- "streamsearch": "0.1.2"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/diff-sequences": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
- "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
- "dev": true,
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
- "dev": true,
- "dependencies": {
- "webidl-conversions": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/domexception/node_modules/webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dotenv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
- "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "node_modules/electron-to-chromium": {
- "version": "1.3.749",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz",
- "integrity": "sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==",
- "dev": true
- },
- "node_modules/emittery": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
- "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/enhanced-resolve": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
- "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.5.0",
- "tapable": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^4.1.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "dev": true,
- "dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "cli.js"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-module-lexer": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz",
- "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==",
- "dev": true
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
- "dev": true,
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/eslint": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz",
- "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.2",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
- "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
- "dev": true,
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-prettier": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz",
- "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==",
- "dev": true,
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "peerDependencies": {
- "eslint": ">=5.0.0",
- "prettier": ">=1.13.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "dependencies": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true,
- "engines": {
- "node": ">=0.8.x"
- }
- },
- "node_modules/exec-sh": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
- "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
- "dev": true
- },
- "node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "node_modules/expect": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
- "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-styles": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
- "dependencies": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/express-session": {
- "version": "1.17.2",
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
- "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==",
- "dependencies": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-headers": "~1.0.2",
- "parseurl": "~1.3.3",
- "safe-buffer": "5.2.1",
- "uid-safe": "~2.1.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/express-session/node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express-session/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/express-session/node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express-session/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/express-session/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/express/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/express/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/express/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "dependencies": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
- "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.2",
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "node_modules/fast-safe-stringify": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
- "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
- },
- "node_modules/fastq": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz",
- "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fb-watchman": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
- "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
- "dev": true,
- "dependencies": {
- "bser": "2.1.1"
- }
- },
- "node_modules/figlet": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz",
- "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/figures/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz",
- "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==",
- "dev": true
- },
- "node_modules/follow-redirects": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
- "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fork-ts-checker-webpack-plugin": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz",
- "integrity": "sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@types/json-schema": "^7.0.5",
- "chalk": "^4.1.0",
- "chokidar": "^3.4.2",
- "cosmiconfig": "^6.0.0",
- "deepmerge": "^4.2.2",
- "fs-extra": "^9.0.0",
- "memfs": "^3.1.2",
- "minimatch": "^3.0.4",
- "schema-utils": "2.7.0",
- "semver": "^7.3.2",
- "tapable": "^1.0.0"
- },
- "engines": {
- "node": ">=10",
- "yarn": ">=1.0.0"
- }
- },
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dev": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/formidable": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
- "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==",
- "dev": true,
- "funding": {
- "url": "https://ko-fi.com/tunnckoCore/commissions"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/fs-monkey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
- "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
- },
- "node_modules/generate-function": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
- "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
- "dependencies": {
- "is-property": "^1.0.2"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true,
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
- },
- "node_modules/globals": {
- "version": "13.9.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz",
- "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz",
- "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==",
- "dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby/node_modules/ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
- "dev": true
- },
- "node_modules/growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
- "dev": true,
- "optional": true
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-ansi/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/highlight.js": {
- "version": "10.7.3",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
- "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
- "dev": true,
- "dependencies": {
- "whatwg-encoding": "^1.0.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "node_modules/http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true,
- "engines": {
- "node": ">=8.12.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/import-local": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
- "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
- "dev": true,
- "dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "node_modules/inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/inquirer/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/inquirer/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inquirer/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
- "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "optional": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-interactive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
- "node_modules/is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
- },
- "node_modules/is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
- "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/istanbul-reports": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
- "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
- "dev": true,
- "dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/iterare": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz",
- "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
- "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
- "dev": true,
- "dependencies": {
- "@jest/core": "^26.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^26.6.3"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-changed-files": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
- "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "execa": "^4.0.0",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-cli": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
- "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
- "dev": true,
- "dependencies": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "prompts": "^2.0.1",
- "yargs": "^15.4.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-cli/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-config": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
- "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^26.6.3",
- "@jest/types": "^26.6.2",
- "babel-jest": "^26.6.3",
- "chalk": "^4.0.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.4",
- "jest-environment-jsdom": "^26.6.2",
- "jest-environment-node": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-jasmine2": "^26.6.3",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "peerDependencies": {
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-diff": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
- "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-diff/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-docblock": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
- "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
- "dev": true,
- "dependencies": {
- "detect-newline": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-each": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
- "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-each/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-environment-jsdom": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
- "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2",
- "jsdom": "^16.4.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-environment-node": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
- "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-get-type": {
- "version": "26.3.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
- "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
- "dev": true,
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "optionalDependencies": {
- "fsevents": "^2.1.2"
- }
- },
- "node_modules/jest-jasmine2": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
- "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
- "dev": true,
- "dependencies": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^26.6.2",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-jasmine2/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-leak-detector": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
- "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
- "dev": true,
- "dependencies": {
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-matcher-utils": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
- "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-message-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
- "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-message-util/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-mock": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
- "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
- "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
- }
- },
- "node_modules/jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
- "dev": true,
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-resolve": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
- "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^26.6.2",
- "read-pkg-up": "^7.0.1",
- "resolve": "^1.18.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-resolve-dependencies": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
- "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-snapshot": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-resolve/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runner": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
- "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-runner/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runtime": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
- "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/globals": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^0.6.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0",
- "yargs": "^15.4.1"
- },
- "bin": {
- "jest-runtime": "bin/jest-runtime.js"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-runtime/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-snapshot": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
- "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
- "chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-snapshot/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-util/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-validate": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
- "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "camelcase": "^6.0.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "leven": "^3.1.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-validate/node_modules/camelcase": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-validate/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-watcher": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
- "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
- "dev": true,
- "dependencies": {
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "jest-util": "^26.6.2",
- "string-length": "^4.0.1"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-watcher/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsdom": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
- "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.5",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jsdom/node_modules/acorn": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
- "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "node_modules/json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonc-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
- "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
- "dev": true
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
- }
- },
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "dependencies": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/libphonenumber-js": {
- "version": "1.9.19",
- "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.19.tgz",
- "integrity": "sha512-RjStfSE63LvXQEBw7pgQHPkY35z8feiMjC9wLvL1Hbt8PbhxpRrACwMXmLQgabb+IpVdcEx+olh8ll7UDXXkfA==",
- "peer": true
- },
- "node_modules/lines-and-columns": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
- "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
- "dev": true
- },
- "node_modules/loader-runner": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
- "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
- "dev": true,
- "engines": {
- "node": ">=6.11.5"
- }
- },
- "node_modules/loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "dependencies": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- },
- "engines": {
- "node": ">=8.9.0"
- }
- },
- "node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
- "node_modules/lodash.toarray": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
- "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
- "dev": true
- },
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
- "dev": true
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-symbols/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/macos-release": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz",
- "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/magic-string": {
- "version": "0.25.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
- "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.4"
- }
- },
- "node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "node_modules/makeerror": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
- "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
- "dev": true,
- "dependencies": {
- "tmpl": "1.0.x"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/memfs": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz",
- "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==",
- "dev": true,
- "dependencies": {
- "fs-monkey": "1.0.3"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/memory-fs": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
- "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
- "dev": true,
- "dependencies": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- },
- "engines": {
- "node": ">=4.3.0 <5.0.0 || >=5.10"
- }
- },
- "node_modules/memory-fs/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "node_modules/memory-fs/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/memory-fs/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.48.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
- "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.31",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
- "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
- "dependencies": {
- "mime-db": "1.48.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/multer": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
- "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
- "dependencies": {
- "append-field": "^1.0.0",
- "busboy": "^0.2.11",
- "concat-stream": "^1.5.2",
- "mkdirp": "^0.5.1",
- "object-assign": "^4.1.1",
- "on-finished": "^2.3.0",
- "type-is": "^1.6.4",
- "xtend": "^4.0.0"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "node_modules/mysql2": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.2.5.tgz",
- "integrity": "sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g==",
- "dependencies": {
- "denque": "^1.4.1",
- "generate-function": "^2.3.1",
- "iconv-lite": "^0.6.2",
- "long": "^4.0.0",
- "lru-cache": "^6.0.0",
- "named-placeholders": "^1.1.2",
- "seq-queue": "^0.0.5",
- "sqlstring": "^2.3.2"
- },
- "engines": {
- "node": ">= 8.0"
- }
- },
- "node_modules/mysql2/node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "node_modules/named-placeholders": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
- "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
- "dependencies": {
- "lru-cache": "^4.1.3"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/named-placeholders/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/named-placeholders/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
- },
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "node_modules/negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "node_modules/node-emoji": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
- "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
- "dev": true,
- "dependencies": {
- "lodash.toarray": "^4.4.0"
- }
- },
- "node_modules/node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
- "dev": true
- },
- "node_modules/node-modules-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
- "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/node-notifier": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
- "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.2",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.0",
- "which": "^2.0.2"
- }
- },
- "node_modules/node-releases": {
- "version": "1.1.73",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
- "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
- "dev": true
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
- "dev": true
- },
- "node_modules/oauth": {
- "version": "0.9.15",
- "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz",
- "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE="
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-hash": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz",
- "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz",
- "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/optional": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
- "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==",
- "dev": true
- },
- "node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/ora": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz",
- "integrity": "sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg==",
- "dev": true,
- "dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/os-name": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.0.tgz",
- "integrity": "sha512-caABzDdJMbtykt7GmSogEat3faTKQhmZf0BS5l/pZGmP0vPWQjXWqOhbLyK+b6j2/DQPmEvYdzLXJXXLJNVDNg==",
- "dev": true,
- "dependencies": {
- "macos-release": "^2.2.0",
- "windows-release": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/p-each-series": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
- "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parent-require": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz",
- "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
- "dependencies": {
- "parse5": "^6.0.1"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/passport": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz",
- "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==",
- "dependencies": {
- "passport-strategy": "1.x.x",
- "pause": "0.0.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-google-oauth20": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz",
- "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==",
- "dependencies": {
- "passport-oauth2": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-jwt": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.0.tgz",
- "integrity": "sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==",
- "dependencies": {
- "jsonwebtoken": "^8.2.0",
- "passport-strategy": "^1.0.0"
- }
- },
- "node_modules/passport-local": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
- "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=",
- "dependencies": {
- "passport-strategy": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/passport-oauth/-/passport-oauth-0.1.15.tgz",
- "integrity": "sha1-+3Tgr+hGFL+iVsX8cWzFa7/IzsA=",
- "dependencies": {
- "oauth": "0.9.x",
- "passport": "~0.1.1",
- "pkginfo": "0.2.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth/node_modules/passport": {
- "version": "0.1.18",
- "resolved": "https://registry.npmjs.org/passport/-/passport-0.1.18.tgz",
- "integrity": "sha1-yCZEedy2QUytu2Z1LRKzfgtlJaE=",
- "dependencies": {
- "pause": "0.0.1",
- "pkginfo": "0.2.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth2": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.5.0.tgz",
- "integrity": "sha512-kqBt6vR/5VlCK8iCx1/KpY42kQ+NEHZwsSyt4Y6STiNjU+wWICG1i8ucc1FapXDGO15C5O5VZz7+7vRzrDPXXQ==",
- "dependencies": {
- "base64url": "3.x.x",
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "uid2": "0.0.x",
- "utils-merge": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-strategy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
- "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-twitter": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/passport-twitter/-/passport-twitter-0.1.5.tgz",
- "integrity": "sha1-0Jqiwil9AhS213Vb9Zs5Lj4D+7I=",
- "dependencies": {
- "passport-oauth": "0.1.x",
- "pkginfo": "0.2.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-to-regexp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz",
- "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA=="
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pause": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
- "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
- },
- "node_modules/picomatch": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
- "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pirates": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
- "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
- "dev": true,
- "dependencies": {
- "node-modules-regexp": "^1.0.0"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkginfo": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz",
- "integrity": "sha1-cjnEKl72wwuPMoQ52bn/cQQkkPg=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz",
- "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/prompts": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
- "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
- "dev": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
- "dev": true
- },
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
- },
- "node_modules/psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "dev": true
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/random-bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
- "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/randomstring": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz",
- "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==",
- "dependencies": {
- "array-uniq": "1.0.2",
- "randombytes": "2.0.3"
- },
- "bin": {
- "randomstring": "bin/randomstring"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/randomstring/node_modules/randombytes": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz",
- "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew="
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
- "dependencies": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "dependencies": {
- "resolve": "^1.1.6"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/reflect-metadata": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
- "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "node_modules/resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-cwd/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated",
- "dev": true
- },
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
- "dev": true,
- "engines": {
- "node": "6.* || >= 7.*"
- }
- },
- "node_modules/run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
- }
- },
- "node_modules/rxjs/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/sane": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
- "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
- "dev": true,
- "dependencies": {
- "@cnakazawa/watch": "^1.0.3",
- "anymatch": "^2.0.0",
- "capture-exit": "^2.0.0",
- "exec-sh": "^0.3.2",
- "execa": "^1.0.0",
- "fb-watchman": "^2.0.0",
- "micromatch": "^3.1.4",
- "minimist": "^1.1.1",
- "walker": "~1.0.5"
- },
- "bin": {
- "sane": "src/cli.js"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/sane/node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/sane/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/sane/node_modules/execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/sane/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/sane/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sane/node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sane/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/sane/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "node_modules/saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "dev": true,
- "dependencies": {
- "xmlchars": "^2.2.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/schema-utils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
- "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.4",
- "ajv": "^6.12.2",
- "ajv-keywords": "^3.4.1"
- },
- "engines": {
- "node": ">= 8.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
- },
- "node_modules/seq-queue": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
- "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
- },
- "node_modules/serialize-javascript": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
- "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
- },
- "node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- },
- "bin": {
- "sha.js": "bin.js"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shelljs": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
- "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
- "dev": true,
- "dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true,
- "optional": true
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slugify": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.0.tgz",
- "integrity": "sha512-FkMq+MQc5hzYgM86nLuHI98Acwi3p4wX+a5BO9Hhw4JdK4L7WueIiZ4tXEobImPqBz2sVcV0+Mu3GRB30IGang==",
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "node_modules/snapdragon/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-list-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
- "dev": true
- },
- "node_modules/source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.19",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
- },
- "node_modules/sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz",
- "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==",
- "dev": true
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "node_modules/sqlstring": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz",
- "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stack-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/stack-utils/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/streamsearch": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
- "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "node_modules/string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "dependencies": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dependencies": {
- "ansi-regex": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/superagent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz",
- "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==",
- "dev": true,
- "dependencies": {
- "component-emitter": "^1.3.0",
- "cookiejar": "^2.1.2",
- "debug": "^4.1.1",
- "fast-safe-stringify": "^2.0.7",
- "form-data": "^3.0.0",
- "formidable": "^1.2.2",
- "methods": "^1.1.2",
- "mime": "^2.4.6",
- "qs": "^6.9.4",
- "readable-stream": "^3.6.0",
- "semver": "^7.3.2"
- },
- "engines": {
- "node": ">= 7.0.0"
- }
- },
- "node_modules/superagent/node_modules/mime": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
- "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/superagent/node_modules/qs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
- "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/superagent/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/superagent/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/superagent/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/supertest": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.1.3.tgz",
- "integrity": "sha512-v2NVRyP73XDewKb65adz+yug1XMtmvij63qIWHZzSX8tp6wiq6xBLUy4SUAd2NII6wIipOmHT/FD9eicpJwdgQ==",
- "dev": true,
- "dependencies": {
- "methods": "^1.1.2",
- "superagent": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/symbol-observable": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz",
- "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "node_modules/table": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz",
- "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==",
- "dev": true,
- "dependencies": {
- "ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/table/node_modules/ajv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz",
- "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/table/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/table/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/table/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/terser": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz",
- "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==",
- "dev": true,
- "dependencies": {
- "commander": "^2.20.0",
- "source-map": "~0.7.2",
- "source-map-support": "~0.5.19"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/terser-webpack-plugin": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz",
- "integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==",
- "dev": true,
- "dependencies": {
- "jest-worker": "^27.0.2",
- "p-limit": "^3.1.0",
- "schema-utils": "^3.0.0",
- "serialize-javascript": "^5.0.1",
- "source-map": "^0.6.1",
- "terser": "^5.7.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.1.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
- "version": "27.0.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz",
- "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/terser/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "node_modules/test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "dev": true,
- "dependencies": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "node_modules/thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/throat": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
- "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
- "dev": true
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "dependencies": {
- "os-tmpdir": "~1.0.2"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/tmpl": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
- "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
- "dev": true
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "dev": true,
- "dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tough-cookie/node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/tr46": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
- "bin": {
- "tree-kill": "cli.js"
- }
- },
- "node_modules/ts-jest": {
- "version": "26.5.6",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz",
- "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==",
- "dev": true,
- "dependencies": {
- "bs-logger": "0.x",
- "buffer-from": "1.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^26.1.0",
- "json5": "2.x",
- "lodash": "4.x",
- "make-error": "1.x",
- "mkdirp": "1.x",
- "semver": "7.x",
- "yargs-parser": "20.x"
- },
- "bin": {
- "ts-jest": "cli.js"
- },
- "engines": {
- "node": ">= 10"
- },
- "peerDependencies": {
- "jest": ">=26 <27",
- "typescript": ">=3.8 <5.0"
- }
- },
- "node_modules/ts-jest/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ts-loader": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz",
- "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^4.0.0",
- "loader-utils": "^2.0.0",
- "micromatch": "^4.0.0",
- "semver": "^7.3.4"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "typescript": "*",
- "webpack": "*"
- }
- },
- "node_modules/ts-loader/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/ts-node": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
- "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
- "dev": true,
- "dependencies": {
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "source-map-support": "^0.5.17",
- "yn": "3.1.1"
- },
- "bin": {
- "ts-node": "dist/bin.js",
- "ts-node-script": "dist/bin-script.js",
- "ts-node-transpile-only": "dist/bin-transpile.js",
- "ts-script": "dist/bin-script-deprecated.js"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "typescript": ">=2.7"
- }
- },
- "node_modules/tsconfig-paths": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
- "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==",
- "dev": true,
- "dependencies": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.1",
- "minimist": "^1.2.0",
- "strip-bom": "^3.0.0"
- }
- },
- "node_modules/tsconfig-paths-webpack-plugin": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.1.tgz",
- "integrity": "sha512-n5CMlUUj+N5pjBhBACLq4jdr9cPTitySCjIosoQm0zwK99gmrcTGAfY9CwxRFT9+9OleNWXPRUcxsKP4AYExxQ==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^5.7.0",
- "tsconfig-paths": "^3.9.0"
- }
- },
- "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/tsconfig-paths-webpack-plugin/node_modules/enhanced-resolve": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
- "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/tsconfig-paths-webpack-plugin/node_modules/tapable": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
- "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tsconfig-paths/node_modules/json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/tsconfig-paths/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tslib": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
- "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
- },
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
- "dependencies": {
- "is-typedarray": "^1.0.0"
- }
- },
- "node_modules/typeorm": {
- "version": "0.2.34",
- "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.34.tgz",
- "integrity": "sha512-FZAeEGGdSGq7uTH3FWRQq67JjKu0mgANsSZ04j3kvDYNgy9KwBl/6RFgMVgiSgjf7Rqd7NrhC2KxVT7I80qf7w==",
- "dependencies": {
- "@sqltools/formatter": "^1.2.2",
- "app-root-path": "^3.0.0",
- "buffer": "^6.0.3",
- "chalk": "^4.1.0",
- "cli-highlight": "^2.1.10",
- "debug": "^4.3.1",
- "dotenv": "^8.2.0",
- "glob": "^7.1.6",
- "js-yaml": "^4.0.0",
- "mkdirp": "^1.0.4",
- "reflect-metadata": "^0.1.13",
- "sha.js": "^2.4.11",
- "tslib": "^2.1.0",
- "xml2js": "^0.4.23",
- "yargonaut": "^1.1.4",
- "yargs": "^16.2.0",
- "zen-observable-ts": "^1.0.0"
- },
- "bin": {
- "typeorm": "cli.js"
- },
- "funding": {
- "url": "https://opencollective.com/typeorm"
- }
- },
- "node_modules/typeorm/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "node_modules/typeorm/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/typeorm/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/typeorm/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/typeorm/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/typeorm/node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/typeorm/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/typeorm/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/typeorm/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/typeorm/node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/typeorm/node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/typescript": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz",
- "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/uid-safe": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
- "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
- "dependencies": {
- "random-bytes": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/uid2": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
- "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I="
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/union-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated",
- "dev": true
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "node_modules/v8-to-istanbul": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
- "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/validator": {
- "version": "13.6.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz",
- "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==",
- "peer": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "dev": true,
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "node_modules/w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dev": true,
- "dependencies": {
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/walker": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
- "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
- "dev": true,
- "dependencies": {
- "makeerror": "1.0.x"
- }
- },
- "node_modules/watchpack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz",
- "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==",
- "dev": true,
- "dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "dev": true,
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
- "dev": true,
- "engines": {
- "node": ">=10.4"
- }
- },
- "node_modules/webpack": {
- "version": "5.38.1",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.38.1.tgz",
- "integrity": "sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/eslint-scope": "^3.7.0",
- "@types/estree": "^0.0.47",
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/wasm-edit": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0",
- "acorn": "^8.2.1",
- "browserslist": "^4.14.5",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.8.0",
- "es-module-lexer": "^0.4.0",
- "eslint-scope": "5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.4",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
- "neo-async": "^2.6.2",
- "schema-utils": "^3.0.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.1.1",
- "watchpack": "^2.2.0",
- "webpack-sources": "^2.3.0"
- },
- "bin": {
- "webpack": "bin/webpack.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-node-externals": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-2.5.2.tgz",
- "integrity": "sha512-aHdl/y2N7PW2Sx7K+r3AxpJO+aDMcYzMQd60Qxefq3+EwhewSbTBqNumOsCE1JsCUNoyfGj5465N0sSf6hc/5w==",
- "dev": true
- },
- "node_modules/webpack-sources": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz",
- "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==",
- "dev": true,
- "dependencies": {
- "source-list-map": "^2.0.1",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/webpack-sources/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack/node_modules/acorn": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
- "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
- "dev": true,
- "peer": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/webpack/node_modules/enhanced-resolve": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
- "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/webpack/node_modules/schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/webpack/node_modules/tapable": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
- "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
- },
- "node_modules/whatwg-url": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz",
- "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.7.0",
- "tr46": "^2.0.2",
- "webidl-conversions": "^6.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "node_modules/windows-release": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz",
- "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==",
- "dev": true,
- "dependencies": {
- "execa": "^4.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "node_modules/write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "node_modules/ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
- "dev": true,
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
- },
- "node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/yargonaut": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz",
- "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==",
- "dependencies": {
- "chalk": "^1.1.1",
- "figlet": "^1.1.1",
- "parent-require": "^1.0.0"
- }
- },
- "node_modules/yargonaut/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/yargonaut/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/yargonaut/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/yargonaut/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/yargonaut/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/yargonaut/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.7",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz",
- "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/zen-observable": {
- "version": "0.8.15",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
- "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ=="
- },
- "node_modules/zen-observable-ts": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.0.0.tgz",
- "integrity": "sha512-KmWcbz+9kKUeAQ8btY8m1SsEFgBcp7h/Uf3V5quhan7ZWdjGsf0JcGLULQiwOZibbFWnHkYq8Nn2AZbJabovQg==",
- "dependencies": {
- "@types/zen-observable": "^0.8.2",
- "zen-observable": "^0.8.15"
- }
- }
- },
- "dependencies": {
- "@angular-devkit/core": {
- "version": "11.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.6.tgz",
- "integrity": "sha512-3dA0Z6sIIxCDjZS/DucgmIKti7EZ/LgHoHgCO72Q50H5ZXbUSNBz5wGl5hVq2+gzrnFgU/0u40MIs6eptk30ZA==",
- "dev": true,
- "requires": {
- "ajv": "6.12.6",
- "fast-json-stable-stringify": "2.1.0",
- "magic-string": "0.25.7",
- "rxjs": "6.6.3",
- "source-map": "0.7.3"
- },
- "dependencies": {
- "rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "@angular-devkit/schematics": {
- "version": "11.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.6.tgz",
- "integrity": "sha512-bhi2+5xtVAjtr3bsXKT8pnoBamQrArd/Y20ueA4Od7cd38YT97nzTA1wyHBFG0vWd0HMyg42ZS0aycNBuOebaA==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "11.2.6",
- "ora": "5.3.0",
- "rxjs": "6.6.3"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "ora": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
- "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==",
- "dev": true,
- "requires": {
- "bl": "^4.0.3",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "log-symbols": "^4.0.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- }
- },
- "rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "@angular-devkit/schematics-cli": {
- "version": "0.1102.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-0.1102.6.tgz",
- "integrity": "sha512-86PmafA9mYDeM08cNWHcJCEY1Yqo5aq/YaBzCak93luByDQ4Ao4Jqts9l/xBCZBGUdVrczCNzcdwr/Y/6JPPzA==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "11.2.6",
- "@angular-devkit/schematics": "11.2.6",
- "@schematics/schematics": "0.1102.6",
- "ansi-colors": "4.1.1",
- "inquirer": "7.3.3",
- "minimist": "1.2.5",
- "symbol-observable": "3.0.0"
- }
- },
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/compat-data": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.4.tgz",
- "integrity": "sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.14.3",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz",
- "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.3",
- "@babel/helper-compilation-targets": "^7.13.16",
- "@babel/helper-module-transforms": "^7.14.2",
- "@babel/helpers": "^7.14.0",
- "@babel/parser": "^7.14.3",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.2",
- "@babel/types": "^7.14.2",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.12.13"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.14.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz",
- "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.2",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz",
- "integrity": "sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.14.4",
- "@babel/helper-validator-option": "^7.12.17",
- "browserslist": "^4.16.6",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "@babel/helper-function-name": {
- "version": "7.14.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
- "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.12.13",
- "@babel/template": "^7.12.13",
- "@babel/types": "^7.14.2"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
- "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
- "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.13.12"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
- "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.13.12"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.14.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
- "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.13.12",
- "@babel/helper-replace-supers": "^7.13.12",
- "@babel/helper-simple-access": "^7.13.12",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/helper-validator-identifier": "^7.14.0",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.2",
- "@babel/types": "^7.14.2"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
- "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
- "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==",
- "dev": true
- },
- "@babel/helper-replace-supers": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz",
- "integrity": "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==",
- "dev": true,
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.13.12",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/traverse": "^7.14.2",
- "@babel/types": "^7.14.4"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
- "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.13.12"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
- "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.12.17",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
- "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==",
- "dev": true
- },
- "@babel/helpers": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
- "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0"
- }
- },
- "@babel/highlight": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
- "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@babel/parser": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz",
- "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==",
- "dev": true
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz",
- "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/template": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
- "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/parser": "^7.12.13",
- "@babel/types": "^7.12.13"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.12.13"
- }
- }
- }
- },
- "@babel/traverse": {
- "version": "7.14.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
- "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.2",
- "@babel/helper-function-name": "^7.14.2",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.14.2",
- "@babel/types": "^7.14.2",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.12.13"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- }
- }
- },
- "@babel/types": {
- "version": "7.14.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz",
- "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "@cnakazawa/watch": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
- "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
- "dev": true,
- "requires": {
- "exec-sh": "^0.3.2",
- "minimist": "^1.2.0"
- }
- },
- "@eslint/eslintrc": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz",
- "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
- }
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true
- },
- "@jest/console": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
- "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^26.6.2",
- "jest-util": "^26.6.2",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "@jest/core": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
- "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
- "dev": true,
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/reporters": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-changed-files": "^26.6.2",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-resolve-dependencies": "^26.6.3",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "jest-watcher": "^26.6.2",
- "micromatch": "^4.0.2",
- "p-each-series": "^2.1.0",
- "rimraf": "^3.0.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "@jest/environment": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
- "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
- "dev": true,
- "requires": {
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2"
- }
- },
- "@jest/fake-timers": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
- "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@sinonjs/fake-timers": "^6.0.1",
- "@types/node": "*",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- }
- },
- "@jest/globals": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
- "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
- "dev": true,
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/types": "^26.6.2",
- "expect": "^26.6.2"
- }
- },
- "@jest/reporters": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
- "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
- "dev": true,
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.2",
- "graceful-fs": "^4.2.4",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^4.0.3",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.0.2",
- "jest-haste-map": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "node-notifier": "^8.0.0",
- "slash": "^3.0.0",
- "source-map": "^0.6.0",
- "string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^7.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "@jest/source-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
- "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.4",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "@jest/test-result": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
- "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- }
- },
- "@jest/test-sequencer": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
- "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3"
- }
- },
- "@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "@nestjs/cli": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-7.6.0.tgz",
- "integrity": "sha512-lW1px2gSHkRoBpKSxzP6IJNQscRKs97OAaVyV46OAP6oUR996E0EPkIslIaa16kKLJ3SFOUeZo5xl5nYbqp43g==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "11.2.6",
- "@angular-devkit/schematics": "11.2.6",
- "@angular-devkit/schematics-cli": "0.1102.6",
- "@nestjs/schematics": "^7.3.0",
- "chalk": "3.0.0",
- "chokidar": "3.5.1",
- "cli-table3": "0.5.1",
- "commander": "4.1.1",
- "fork-ts-checker-webpack-plugin": "6.2.0",
- "inquirer": "7.3.3",
- "node-emoji": "1.10.0",
- "ora": "5.4.0",
- "os-name": "4.0.0",
- "rimraf": "3.0.2",
- "shelljs": "0.8.4",
- "tree-kill": "1.2.2",
- "tsconfig-paths": "3.9.0",
- "tsconfig-paths-webpack-plugin": "3.5.1",
- "typescript": "4.2.3",
- "webpack": "5.28.0",
- "webpack-node-externals": "2.5.2"
- },
- "dependencies": {
- "@types/estree": {
- "version": "0.0.46",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz",
- "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==",
- "dev": true
- },
- "acorn": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
- "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
- "dev": true
- },
- "enhanced-resolve": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
- "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- }
- },
- "schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
- },
- "tapable": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
- "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
- "dev": true
- },
- "typescript": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz",
- "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==",
- "dev": true
- },
- "webpack": {
- "version": "5.28.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.28.0.tgz",
- "integrity": "sha512-1xllYVmA4dIvRjHzwELgW4KjIU1fW4PEuEnjsylz7k7H5HgPOctIq7W1jrt3sKH9yG5d72//XWzsHhfoWvsQVg==",
- "dev": true,
- "requires": {
- "@types/eslint-scope": "^3.7.0",
- "@types/estree": "^0.0.46",
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/wasm-edit": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0",
- "acorn": "^8.0.4",
- "browserslist": "^4.14.5",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.7.0",
- "es-module-lexer": "^0.4.0",
- "eslint-scope": "^5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.4",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
- "neo-async": "^2.6.2",
- "schema-utils": "^3.0.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.1.1",
- "watchpack": "^2.0.0",
- "webpack-sources": "^2.1.1"
- }
- }
- }
- },
- "@nestjs/common": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-7.6.17.tgz",
- "integrity": "sha512-RHvD32FxfV7yDWX9GPmn0ZSv7ka5kLeVamU5ZpoXSTUjkGqWFt3MTyIP+HUQD2778kDqT+CgEtVJ1fxDG5Oh9g==",
- "requires": {
- "axios": "0.21.1",
- "iterare": "1.2.1",
- "tslib": "2.2.0",
- "uuid": "8.3.2"
- }
- },
- "@nestjs/core": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-7.6.17.tgz",
- "integrity": "sha512-dH7PGDj1dvBfOYgxJlxh54vdnFFSLst7+Spg3E7Jpo+n11Ht5Ee5mTjSzXieRVfFba/sI3NIHF/N1stn36bU9w==",
- "requires": {
- "@nuxtjs/opencollective": "0.3.2",
- "fast-safe-stringify": "2.0.7",
- "iterare": "1.2.1",
- "object-hash": "2.1.1",
- "path-to-regexp": "3.2.0",
- "tslib": "2.2.0",
- "uuid": "8.3.2"
- }
- },
- "@nestjs/jwt": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-7.2.0.tgz",
- "integrity": "sha512-uOTqYmWNpu+oS/MrdYjrWXtKGV4HkCYmAEVEFPP/KfiP/7K6fNy+boLllE6cnqESAXh9u0CLa1noAAavs+LHEQ==",
- "requires": {
- "@types/jsonwebtoken": "8.5.0",
- "jsonwebtoken": "8.5.1"
- }
- },
- "@nestjs/mapped-types": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-0.4.1.tgz",
- "integrity": "sha512-JXrw2LMangSU3vnaXWXVX47GRG1FbbNh4aVBbidDjxT3zlghsoNQY6qyWtT001MCl8lJGo8I6i6+DurBRRxl/Q==",
- "requires": {}
- },
- "@nestjs/passport": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-7.1.5.tgz",
- "integrity": "sha512-Hu9hPxTdBZA0C4GrWTsSflzwsJ99oAk9jqAwpcszdFNqfjMjkPGuCM9QsVZbBP2bE8fxrVrPsNOILS6puY8e/A==",
- "requires": {}
- },
- "@nestjs/platform-express": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-7.6.17.tgz",
- "integrity": "sha512-lyMwx8X/zTXZzxrd6Xn8BEcS/wuFyEgRVk9f15Z29hSaWHd78mUlBXvSnKJpzsN7wTjU8YWbAy/Ig9kIBS6efg==",
- "requires": {
- "body-parser": "1.19.0",
- "cors": "2.8.5",
- "express": "4.17.1",
- "multer": "1.4.2",
- "tslib": "2.2.0"
- }
- },
- "@nestjs/schematics": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-7.3.1.tgz",
- "integrity": "sha512-eyBjJstAjecpdzRuBLiqnwomwXIAEV3+kPkpaphOieRUM6nBhjnXCCl3Qf8Dul2QUQK4NOVPd8FFxWtGP5XNlg==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "11.2.4",
- "@angular-devkit/schematics": "11.2.4",
- "fs-extra": "9.1.0",
- "jsonc-parser": "3.0.0",
- "pluralize": "8.0.0"
- },
- "dependencies": {
- "@angular-devkit/core": {
- "version": "11.2.4",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.4.tgz",
- "integrity": "sha512-98mGDV4XtKWiQ/2D6yzvOHrnJovXchaAN9AjscAHd2an8Fkiq72d9m2wREpk+2J40NWTDB6J5iesTh3qbi8+CA==",
- "dev": true,
- "requires": {
- "ajv": "6.12.6",
- "fast-json-stable-stringify": "2.1.0",
- "magic-string": "0.25.7",
- "rxjs": "6.6.3",
- "source-map": "0.7.3"
- }
- },
- "@angular-devkit/schematics": {
- "version": "11.2.4",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.4.tgz",
- "integrity": "sha512-M9Ike1TYawOIHzenlZS1ufQbsS+Z11/doj5w/UrU0q2OEKc6U375t5qVGgKo3PLHHS8osb9aW9xYwBfVlKrryQ==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "11.2.4",
- "ora": "5.3.0",
- "rxjs": "6.6.3"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "ora": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
- "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==",
- "dev": true,
- "requires": {
- "bl": "^4.0.3",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "log-symbols": "^4.0.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- }
- },
- "rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "@nestjs/serve-static": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-2.1.4.tgz",
- "integrity": "sha512-w2PpLKzQOB8rJ+vMOy28xm8jwE8VjJfA9U+KOm0H0OY62g2oOWJ+OQPSDogP7XxAzZwq+Bt8wNU2oS8+z6v6Zg==",
- "requires": {
- "path-to-regexp": "0.1.7"
- },
- "dependencies": {
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- }
- }
- },
- "@nestjs/testing": {
- "version": "7.6.17",
- "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-7.6.17.tgz",
- "integrity": "sha512-wWImNvfRapCCtLXMsxCs1Ax2Uj/qSytCnolSEXL7LnH80exwHRmBeLtTfGxArsv9Y1NHr24NarfN6H0QxysZ3g==",
- "dev": true,
- "requires": {
- "optional": "0.1.4",
- "tslib": "2.2.0"
- }
- },
- "@nestjs/typeorm": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-7.1.5.tgz",
- "integrity": "sha512-utE1FkYM/gyCXUqw3zKYYS0YZ3DfkAnzsCx4T48cNnSDTCeWS+u3yt0FMDFjwSiQSaLrzpiSff/FaxJQvRlYow==",
- "requires": {
- "uuid": "8.3.1"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
- "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg=="
- }
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz",
- "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@nuxtjs/opencollective": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz",
- "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==",
- "requires": {
- "chalk": "^4.1.0",
- "consola": "^2.15.0",
- "node-fetch": "^2.6.1"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "@schematics/schematics": {
- "version": "0.1102.6",
- "resolved": "https://registry.npmjs.org/@schematics/schematics/-/schematics-0.1102.6.tgz",
- "integrity": "sha512-x77kbJL/HqR4gx0tbt35VCOGLyMvB7jD/x7eB1njhQRF8E/xynEOk3i+7A5VmK67QP5NJxU8BQKlPkJ55tBDmg==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "11.2.6",
- "@angular-devkit/schematics": "11.2.6"
- }
- },
- "@sendgrid/client": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.4.3.tgz",
- "integrity": "sha512-tTaHx893w5iqG0sVtUnMyRchuwYF95k4UOkmov1MouMIeMUbNvbalITo7cG7YSXUTY9rT2t4eBY6HcEBCVeqfg==",
- "requires": {
- "@sendgrid/helpers": "^7.4.3",
- "axios": "^0.21.1"
- }
- },
- "@sendgrid/helpers": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.4.3.tgz",
- "integrity": "sha512-Wt+68g1sVEM5UspJh34O/cxtv6BBbtAIk7U9B3PB2ySOtPs9e6hI1QkgYVwpNmkt7k2p86muUNyma/Aig25agg==",
- "requires": {
- "deepmerge": "^4.2.2"
- }
- },
- "@sendgrid/mail": {
- "version": "7.4.5",
- "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.4.5.tgz",
- "integrity": "sha512-adXMvrTUOlYr7+UTigZRGSYR9vheBv1y4fF2mugn29NBdQMfcQPGLQ5vIHgSAfcboBFCagZdamZqM5FeSGU0Hw==",
- "requires": {
- "@sendgrid/client": "^7.4.3",
- "@sendgrid/helpers": "^7.4.3"
- }
- },
- "@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
- "dev": true,
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "@sqltools/formatter": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz",
- "integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
- },
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true
- },
- "@types/babel__core": {
- "version": "7.1.14",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz",
- "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz",
- "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz",
- "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz",
- "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.3.0"
- }
- },
- "@types/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
- "dev": true,
- "requires": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "@types/connect": {
- "version": "3.4.34",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz",
- "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==",
- "dev": true
- },
- "@types/eslint": {
- "version": "7.2.13",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz",
- "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==",
- "dev": true,
- "requires": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "@types/eslint-scope": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz",
- "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==",
- "dev": true,
- "requires": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
- "@types/estree": {
- "version": "0.0.47",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz",
- "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==",
- "dev": true
- },
- "@types/express": {
- "version": "4.17.12",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz",
- "integrity": "sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==",
- "dev": true,
- "requires": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.18",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "@types/express-serve-static-core": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz",
- "integrity": "sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*"
- }
- },
- "@types/express-session": {
- "version": "1.17.3",
- "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.3.tgz",
- "integrity": "sha512-57DnyxiqClXOIjoCgeKCUYfKxBPOlOY/k+l1TPK+7bSwyiPTrS5FIk1Ycql7twk4wO7P5lfOVy6akDGiaMSLfw==",
- "dev": true,
- "requires": {
- "@types/express": "*"
- }
- },
- "@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "26.0.23",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz",
- "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==",
- "dev": true,
- "requires": {
- "jest-diff": "^26.0.0",
- "pretty-format": "^26.0.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
- "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
- "dev": true
- },
- "@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
- "dev": true
- },
- "@types/jsonwebtoken": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz",
- "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/mime": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
- "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
- "dev": true
- },
- "@types/node": {
- "version": "14.17.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz",
- "integrity": "sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw=="
- },
- "@types/normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
- "dev": true
- },
- "@types/oauth": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.1.tgz",
- "integrity": "sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
- "@types/passport": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.6.tgz",
- "integrity": "sha512-9oKfrJXuAxvyxdrtMCxKkHgmd6DMO8NDOLvMJ1LvIWd6/xP+i81PAkpTaEca7VhJX9S009RciwZL/j6dsLsHrA==",
- "dev": true,
- "requires": {
- "@types/express": "*"
- }
- },
- "@types/passport-google-oauth20": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.8.tgz",
- "integrity": "sha512-Lc+DYCCFeMVbodISydQLT6PjIlL0TcLup3HMiJ8RHHHBltArA3oC4qocyQH1OsEq5ovQ19PaKlpGqsNT8NYz1w==",
- "dev": true,
- "requires": {
- "@types/express": "*",
- "@types/passport": "*",
- "@types/passport-oauth2": "*"
- }
- },
- "@types/passport-jwt": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-3.0.5.tgz",
- "integrity": "sha512-O6zZ4WKzQUwg3OU0MnOA2AIEQ6KfHyGdLoi4fqBLyb+kV7miGKNA2KNJRtiq45EsQ2QEDO8rKqORjXpWV7UJNg==",
- "dev": true,
- "requires": {
- "@types/express": "*",
- "@types/jsonwebtoken": "*",
- "@types/passport-strategy": "*"
- }
- },
- "@types/passport-local": {
- "version": "1.0.33",
- "resolved": "https://registry.npmjs.org/@types/passport-local/-/passport-local-1.0.33.tgz",
- "integrity": "sha512-+rn6ZIxje0jZ2+DAiWFI8vGG7ZFKB0hXx2cUdMmudSWsigSq6ES7Emso46r4HJk0qCgrZVfI8sJiM7HIYf4SbA==",
- "dev": true,
- "requires": {
- "@types/express": "*",
- "@types/passport": "*",
- "@types/passport-strategy": "*"
- }
- },
- "@types/passport-oauth2": {
- "version": "1.4.10",
- "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.10.tgz",
- "integrity": "sha512-klShWm9xAqjM3rU31KyMMiB9M8jmJPkStUvCJ/kIv73/Vh3OVnfeTExrkMCM2wA+94MliExqwHVL3J0WD2kbnQ==",
- "dev": true,
- "requires": {
- "@types/express": "*",
- "@types/oauth": "*",
- "@types/passport": "*"
- }
- },
- "@types/passport-strategy": {
- "version": "0.2.35",
- "resolved": "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.35.tgz",
- "integrity": "sha512-o5D19Jy2XPFoX2rKApykY15et3Apgax00RRLf0RUotPDUsYrQa7x4howLYr9El2mlUApHmCMv5CZ1IXqKFQ2+g==",
- "dev": true,
- "requires": {
- "@types/express": "*",
- "@types/passport": "*"
- }
- },
- "@types/prettier": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz",
- "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==",
- "dev": true
- },
- "@types/qs": {
- "version": "6.9.6",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz",
- "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==",
- "dev": true
- },
- "@types/range-parser": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
- "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
- "dev": true
- },
- "@types/serve-static": {
- "version": "1.13.9",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz",
- "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==",
- "dev": true,
- "requires": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
- "@types/stack-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
- "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
- "dev": true
- },
- "@types/superagent": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.11.tgz",
- "integrity": "sha512-cZkWBXZI+jESnUTp8RDGBmk1Zn2MkScP4V5bjD7DyqB7L0WNWpblh4KX5K/6aTqxFZMhfo1bhi2cwoAEDVBBJw==",
- "dev": true,
- "requires": {
- "@types/cookiejar": "*",
- "@types/node": "*"
- }
- },
- "@types/supertest": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz",
- "integrity": "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==",
- "dev": true,
- "requires": {
- "@types/superagent": "*"
- }
- },
- "@types/validator": {
- "version": "13.1.3",
- "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.3.tgz",
- "integrity": "sha512-DaOWN1zf7j+8nHhqXhIgNmS+ltAC53NXqGxYuBhWqWgqolRhddKzfZU814lkHQSTG0IUfQxU7Cg0gb8fFWo2mA==",
- "peer": true
- },
- "@types/yargs": {
- "version": "15.0.13",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
- "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "20.2.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
- "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
- "dev": true
- },
- "@types/zen-observable": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.2.tgz",
- "integrity": "sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg=="
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.1.tgz",
- "integrity": "sha512-aoIusj/8CR+xDWmZxARivZjbMBQTT9dImUtdZ8tVCVRXgBUuuZyM5Of5A9D9arQPxbi/0rlJLcuArclz/rCMJw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "4.26.1",
- "@typescript-eslint/scope-manager": "4.26.1",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "lodash": "^4.17.21",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/experimental-utils": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.1.tgz",
- "integrity": "sha512-sQHBugRhrXzRCs9PaGg6rowie4i8s/iD/DpTB+EXte8OMDfdCG5TvO73XlO9Wc/zi0uyN4qOmX9hIjQEyhnbmQ==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.26.1",
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/typescript-estree": "4.26.1",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.26.1.tgz",
- "integrity": "sha512-q7F3zSo/nU6YJpPJvQveVlIIzx9/wu75lr6oDbDzoeIRWxpoc/HQ43G4rmMoCc5my/3uSj2VEpg/D83LYZF5HQ==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "4.26.1",
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/typescript-estree": "4.26.1",
- "debug": "^4.3.1"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.26.1.tgz",
- "integrity": "sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/visitor-keys": "4.26.1"
- }
- },
- "@typescript-eslint/types": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.26.1.tgz",
- "integrity": "sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg==",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.1.tgz",
- "integrity": "sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.26.1",
- "@typescript-eslint/visitor-keys": "4.26.1",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "4.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.1.tgz",
- "integrity": "sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.26.1",
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "@webassemblyjs/ast": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz",
- "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/helper-numbers": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0"
- }
- },
- "@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz",
- "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==",
- "dev": true
- },
- "@webassemblyjs/helper-api-error": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz",
- "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==",
- "dev": true
- },
- "@webassemblyjs/helper-buffer": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz",
- "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==",
- "dev": true
- },
- "@webassemblyjs/helper-numbers": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz",
- "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.0",
- "@webassemblyjs/helper-api-error": "1.11.0",
- "@xtuc/long": "4.2.2"
- }
- },
- "@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz",
- "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==",
- "dev": true
- },
- "@webassemblyjs/helper-wasm-section": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz",
- "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-buffer": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/wasm-gen": "1.11.0"
- }
- },
- "@webassemblyjs/ieee754": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz",
- "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==",
- "dev": true,
- "requires": {
- "@xtuc/ieee754": "^1.2.0"
- }
- },
- "@webassemblyjs/leb128": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz",
- "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==",
- "dev": true,
- "requires": {
- "@xtuc/long": "4.2.2"
- }
- },
- "@webassemblyjs/utf8": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz",
- "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==",
- "dev": true
- },
- "@webassemblyjs/wasm-edit": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz",
- "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-buffer": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/helper-wasm-section": "1.11.0",
- "@webassemblyjs/wasm-gen": "1.11.0",
- "@webassemblyjs/wasm-opt": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0",
- "@webassemblyjs/wast-printer": "1.11.0"
- }
- },
- "@webassemblyjs/wasm-gen": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz",
- "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/ieee754": "1.11.0",
- "@webassemblyjs/leb128": "1.11.0",
- "@webassemblyjs/utf8": "1.11.0"
- }
- },
- "@webassemblyjs/wasm-opt": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz",
- "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-buffer": "1.11.0",
- "@webassemblyjs/wasm-gen": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0"
- }
- },
- "@webassemblyjs/wasm-parser": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz",
- "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/helper-api-error": "1.11.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
- "@webassemblyjs/ieee754": "1.11.0",
- "@webassemblyjs/leb128": "1.11.0",
- "@webassemblyjs/utf8": "1.11.0"
- }
- },
- "@webassemblyjs/wast-printer": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz",
- "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.0",
- "@xtuc/long": "4.2.2"
- }
- },
- "@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
- },
- "@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
- },
- "abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
- "dev": true
- },
- "accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
- "requires": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
- }
- },
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
- },
- "acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "dev": true,
- "requires": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- }
- },
- "acorn-jsx": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
- "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
- "dev": true,
- "requires": {}
- },
- "acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true
- },
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "requires": {
- "debug": "4"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "requires": {}
- },
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- }
- }
- },
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "app-root-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz",
- "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw=="
- },
- "append-field": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
- "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
- },
- "arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "array-uniq": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz",
- "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0="
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "requires": {
- "follow-redirects": "^1.10.0"
- }
- },
- "babel-jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
- "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
- "dev": true,
- "requires": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "babel-plugin-istanbul": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
- "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^4.0.0",
- "test-exclude": "^6.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
- "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
- "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^26.6.2",
- "babel-preset-current-node-syntax": "^1.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "base64url": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
- "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="
- },
- "big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- }
- }
- },
- "body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
- "requires": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
- "dev": true
- },
- "browserslist": {
- "version": "4.16.6",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001219",
- "colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.71"
- }
- },
- "bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
- "requires": {
- "fast-json-stable-stringify": "2.x"
- }
- },
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
- },
- "busboy": {
- "version": "0.2.14",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
- "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
- "requires": {
- "dicer": "0.2.5",
- "readable-stream": "1.1.x"
- }
- },
- "bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "caniuse-lite": {
- "version": "1.0.30001235",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz",
- "integrity": "sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A==",
- "dev": true
- },
- "capture-exit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
- "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
- "dev": true,
- "requires": {
- "rsvp": "^4.8.4"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.3.1",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- }
- },
- "chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true
- },
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "cjs-module-lexer": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
- "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
- "dev": true
- },
- "class-transformer": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz",
- "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==",
- "peer": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "class-validator": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz",
- "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==",
- "peer": true,
- "requires": {
- "@types/validator": "^13.1.3",
- "libphonenumber-js": "^1.9.7",
- "validator": "^13.5.2"
- }
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cli-highlight": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz",
- "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
- "requires": {
- "chalk": "^4.0.0",
- "highlight.js": "^10.7.1",
- "mz": "^2.4.0",
- "parse5": "^5.1.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.0",
- "yargs": "^16.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- }
- }
- },
- "cli-spinners": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz",
- "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==",
- "dev": true
- },
- "cli-table3": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz",
- "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==",
- "dev": true,
- "requires": {
- "colors": "^1.1.2",
- "object-assign": "^4.1.0",
- "string-width": "^2.1.1"
- }
- },
- "cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true
- },
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "colorette": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
- "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
- "dev": true
- },
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
- "dev": true,
- "optional": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
- "dev": true
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "consola": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
- "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
- },
- "content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
- "requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
- },
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
- },
- "cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
- "dev": true
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "requires": {
- "object-assign": "^4",
- "vary": "^1"
- }
- },
- "cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
- "dev": true,
- "requires": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.7.2"
- }
- },
- "create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
- "dev": true
- },
- "cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dev": true,
- "requires": {
- "cssom": "~0.3.6"
- },
- "dependencies": {
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- }
- }
- },
- "data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "dev": true,
- "requires": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- }
- },
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "decimal.js": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
- "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==",
- "dev": true
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
- },
- "defaults": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "dev": true,
- "requires": {
- "clone": "^1.0.2"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "denque": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
- "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
- },
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
- },
- "detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true
- },
- "dicer": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
- "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
- "requires": {
- "readable-stream": "1.1.x",
- "streamsearch": "0.1.2"
- }
- },
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- },
- "diff-sequences": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
- "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
- "dev": true,
- "requires": {
- "webidl-conversions": "^5.0.0"
- },
- "dependencies": {
- "webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
- "dev": true
- }
- }
- },
- "dotenv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
- "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g=="
- },
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "electron-to-chromium": {
- "version": "1.3.749",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz",
- "integrity": "sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==",
- "dev": true
- },
- "emittery": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
- "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "enhanced-resolve": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
- "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.5.0",
- "tapable": "^1.0.0"
- }
- },
- "enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "dev": true,
- "requires": {
- "prr": "~1.0.1"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-module-lexer": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz",
- "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==",
- "dev": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
- "dev": true,
- "requires": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- }
- }
- },
- "eslint": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz",
- "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.2",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
- "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz",
- "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- },
- "espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "requires": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
- },
- "events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true
- },
- "exec-sh": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
- "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
- "dev": true
- },
- "execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "expect": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
- "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-styles": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0"
- }
- },
- "express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
- "requires": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- }
- }
- },
- "express-session": {
- "version": "1.17.2",
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
- "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==",
- "requires": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-headers": "~1.0.2",
- "parseurl": "~1.3.3",
- "safe-buffer": "5.2.1",
- "uid-safe": "~2.1.5"
- },
- "dependencies": {
- "cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- }
- }
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- }
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
- "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.2",
- "picomatch": "^2.2.1"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fast-safe-stringify": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
- "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
- },
- "fastq": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz",
- "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fb-watchman": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
- "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
- "dev": true,
- "requires": {
- "bser": "2.1.1"
- }
- },
- "figlet": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz",
- "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww=="
- },
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- }
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz",
- "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==",
- "dev": true
- },
- "follow-redirects": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
- "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg=="
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "fork-ts-checker-webpack-plugin": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz",
- "integrity": "sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.8.3",
- "@types/json-schema": "^7.0.5",
- "chalk": "^4.1.0",
- "chokidar": "^3.4.2",
- "cosmiconfig": "^6.0.0",
- "deepmerge": "^4.2.2",
- "fs-extra": "^9.0.0",
- "memfs": "^3.1.2",
- "minimatch": "^3.0.4",
- "schema-utils": "2.7.0",
- "semver": "^7.3.2",
- "tapable": "^1.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "formidable": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
- "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==",
- "dev": true
- },
- "forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "fs-monkey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
- "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
- },
- "generate-function": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
- "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
- "requires": {
- "is-property": "^1.0.2"
- }
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
- },
- "get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- }
- },
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true
- },
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
- },
- "globals": {
- "version": "13.9.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz",
- "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz",
- "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
- "dev": true
- }
- }
- },
- "graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
- "dev": true
- },
- "growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
- "dev": true,
- "optional": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "requires": {
- "ansi-regex": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- }
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "dev": true
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "highlight.js": {
- "version": "10.7.3",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
- "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="
- },
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
- "dev": true,
- "requires": {
- "whatwg-encoding": "^1.0.5"
- }
- },
- "html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "dev": true,
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- },
- "human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "import-local": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
- "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
- "dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "requires": {
- "ci-info": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
- "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "optional": true
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-interactive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
- },
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "optional": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- }
- },
- "istanbul-lib-source-maps": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
- "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "istanbul-reports": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
- "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
- "dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "iterare": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz",
- "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q=="
- },
- "jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
- "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
- "dev": true,
- "requires": {
- "@jest/core": "^26.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^26.6.3"
- }
- },
- "jest-changed-files": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
- "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "execa": "^4.0.0",
- "throat": "^5.0.0"
- }
- },
- "jest-cli": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
- "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
- "dev": true,
- "requires": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "prompts": "^2.0.1",
- "yargs": "^15.4.1"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-config": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
- "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^26.6.3",
- "@jest/types": "^26.6.2",
- "babel-jest": "^26.6.3",
- "chalk": "^4.0.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.4",
- "jest-environment-jsdom": "^26.6.2",
- "jest-environment-node": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-jasmine2": "^26.6.3",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-diff": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
- "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-docblock": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
- "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
- "dev": true,
- "requires": {
- "detect-newline": "^3.0.0"
- }
- },
- "jest-each": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
- "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-environment-jsdom": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
- "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
- "dev": true,
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2",
- "jsdom": "^16.4.0"
- }
- },
- "jest-environment-node": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
- "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
- "dev": true,
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- }
- },
- "jest-get-type": {
- "version": "26.3.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
- "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-jasmine2": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
- "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^26.6.2",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2",
- "throat": "^5.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-leak-detector": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
- "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
- "dev": true,
- "requires": {
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- }
- },
- "jest-matcher-utils": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
- "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-message-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
- "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-mock": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
- "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*"
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
- "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
- "dev": true,
- "requires": {}
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
- "dev": true
- },
- "jest-resolve": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
- "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^26.6.2",
- "read-pkg-up": "^7.0.1",
- "resolve": "^1.18.1",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-resolve-dependencies": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
- "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-snapshot": "^26.6.2"
- }
- },
- "jest-runner": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
- "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-runtime": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
- "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
- "dev": true,
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/globals": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^0.6.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0",
- "yargs": "^15.4.1"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-snapshot": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
- "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
- "chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-validate": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
- "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "camelcase": "^6.0.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "leven": "^3.1.0",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-watcher": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
- "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "jest-util": "^26.6.2",
- "string-length": "^4.0.1"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsdom": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
- "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
- "dev": true,
- "requires": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.5",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "acorn": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
- "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
- "dev": true
- }
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "jsonc-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
- "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
- "dev": true
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "libphonenumber-js": {
- "version": "1.9.19",
- "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.19.tgz",
- "integrity": "sha512-RjStfSE63LvXQEBw7pgQHPkY35z8feiMjC9wLvL1Hbt8PbhxpRrACwMXmLQgabb+IpVdcEx+olh8ll7UDXXkfA==",
- "peer": true
- },
- "lines-and-columns": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
- "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
- "dev": true
- },
- "loader-runner": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
- "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
- "dev": true
- },
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
- "lodash.toarray": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
- "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
- "dev": true
- },
- "lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
- "dev": true
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "macos-release": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz",
- "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==",
- "dev": true
- },
- "magic-string": {
- "version": "0.25.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
- "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.4"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "makeerror": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
- "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
- "dev": true,
- "requires": {
- "tmpl": "1.0.x"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
- },
- "memfs": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz",
- "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==",
- "dev": true,
- "requires": {
- "fs-monkey": "1.0.3"
- }
- },
- "memory-fs": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
- "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
- "dev": true,
- "requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
- },
- "micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- }
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.48.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
- "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
- },
- "mime-types": {
- "version": "2.1.31",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
- "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
- "requires": {
- "mime-db": "1.48.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "multer": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
- "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
- "requires": {
- "append-field": "^1.0.0",
- "busboy": "^0.2.11",
- "concat-stream": "^1.5.2",
- "mkdirp": "^0.5.1",
- "object-assign": "^4.1.1",
- "on-finished": "^2.3.0",
- "type-is": "^1.6.4",
- "xtend": "^4.0.0"
- }
- },
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "mysql2": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.2.5.tgz",
- "integrity": "sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g==",
- "requires": {
- "denque": "^1.4.1",
- "generate-function": "^2.3.1",
- "iconv-lite": "^0.6.2",
- "long": "^4.0.0",
- "lru-cache": "^6.0.0",
- "named-placeholders": "^1.1.2",
- "seq-queue": "^0.0.5",
- "sqlstring": "^2.3.2"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- }
- }
- },
- "mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "requires": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "named-placeholders": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
- "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
- "requires": {
- "lru-cache": "^4.1.3"
- },
- "dependencies": {
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
- }
- }
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "node-emoji": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
- "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
- "dev": true,
- "requires": {
- "lodash.toarray": "^4.4.0"
- }
- },
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
- },
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
- "dev": true
- },
- "node-modules-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
- "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
- "dev": true
- },
- "node-notifier": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
- "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
- "dev": true,
- "optional": true,
- "requires": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.2",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.0",
- "which": "^2.0.2"
- }
- },
- "node-releases": {
- "version": "1.1.73",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
- "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
- "dev": true
- },
- "oauth": {
- "version": "0.9.15",
- "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz",
- "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-hash": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz",
- "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ=="
- },
- "object-inspect": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz",
- "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==",
- "dev": true
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "optional": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
- "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==",
- "dev": true
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "ora": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz",
- "integrity": "sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg==",
- "dev": true,
- "requires": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "os-name": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.0.tgz",
- "integrity": "sha512-caABzDdJMbtykt7GmSogEat3faTKQhmZf0BS5l/pZGmP0vPWQjXWqOhbLyK+b6j2/DQPmEvYdzLXJXXLJNVDNg==",
- "dev": true,
- "requires": {
- "macos-release": "^2.2.0",
- "windows-release": "^4.0.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "p-each-series": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
- "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parent-require": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz",
- "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc="
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
- "requires": {
- "parse5": "^6.0.1"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "passport": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz",
- "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==",
- "requires": {
- "passport-strategy": "1.x.x",
- "pause": "0.0.1"
- }
- },
- "passport-google-oauth20": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz",
- "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==",
- "requires": {
- "passport-oauth2": "1.x.x"
- }
- },
- "passport-jwt": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.0.tgz",
- "integrity": "sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==",
- "requires": {
- "jsonwebtoken": "^8.2.0",
- "passport-strategy": "^1.0.0"
- }
- },
- "passport-local": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
- "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=",
- "requires": {
- "passport-strategy": "1.x.x"
- }
- },
- "passport-oauth": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/passport-oauth/-/passport-oauth-0.1.15.tgz",
- "integrity": "sha1-+3Tgr+hGFL+iVsX8cWzFa7/IzsA=",
- "requires": {
- "oauth": "0.9.x",
- "passport": "~0.1.1",
- "pkginfo": "0.2.x"
- },
- "dependencies": {
- "passport": {
- "version": "0.1.18",
- "resolved": "https://registry.npmjs.org/passport/-/passport-0.1.18.tgz",
- "integrity": "sha1-yCZEedy2QUytu2Z1LRKzfgtlJaE=",
- "requires": {
- "pause": "0.0.1",
- "pkginfo": "0.2.x"
- }
- }
- }
- },
- "passport-oauth2": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.5.0.tgz",
- "integrity": "sha512-kqBt6vR/5VlCK8iCx1/KpY42kQ+NEHZwsSyt4Y6STiNjU+wWICG1i8ucc1FapXDGO15C5O5VZz7+7vRzrDPXXQ==",
- "requires": {
- "base64url": "3.x.x",
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "uid2": "0.0.x",
- "utils-merge": "1.x.x"
- }
- },
- "passport-strategy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
- "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ="
- },
- "passport-twitter": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/passport-twitter/-/passport-twitter-0.1.5.tgz",
- "integrity": "sha1-0Jqiwil9AhS213Vb9Zs5Lj4D+7I=",
- "requires": {
- "passport-oauth": "0.1.x",
- "pkginfo": "0.2.x"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-to-regexp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz",
- "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA=="
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "pause": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
- "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
- },
- "picomatch": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
- "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
- "dev": true
- },
- "pirates": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
- "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
- "dev": true,
- "requires": {
- "node-modules-regexp": "^1.0.0"
- }
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "pkginfo": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz",
- "integrity": "sha1-cjnEKl72wwuPMoQ52bn/cQQkkPg="
- },
- "pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "prettier": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz",
- "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- }
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "prompts": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
- "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "random-bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
- "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "randomstring": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz",
- "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==",
- "requires": {
- "array-uniq": "1.0.2",
- "randombytes": "2.0.3"
- },
- "dependencies": {
- "randombytes": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz",
- "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew="
- }
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
- "requires": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "requires": {
- "resolve": "^1.1.6"
- }
- },
- "reflect-metadata": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
- "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
- "dev": true
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
- "dev": true
- },
- "run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "requires": {
- "tslib": "^1.9.0"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- }
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sane": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
- "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
- "dev": true,
- "requires": {
- "@cnakazawa/watch": "^1.0.3",
- "anymatch": "^2.0.0",
- "capture-exit": "^2.0.0",
- "exec-sh": "^0.3.2",
- "execa": "^1.0.0",
- "fb-watchman": "^2.0.0",
- "micromatch": "^3.1.4",
- "minimist": "^1.1.1",
- "walker": "~1.0.5"
- },
- "dependencies": {
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "dev": true,
- "requires": {
- "xmlchars": "^2.2.0"
- }
- },
- "schema-utils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
- "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.4",
- "ajv": "^6.12.2",
- "ajv-keywords": "^3.4.1"
- }
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
- "requires": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
- }
- }
- },
- "seq-queue": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
- "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
- },
- "serialize-javascript": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
- "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- }
- }
- },
- "setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
- },
- "sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "shelljs": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
- "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- }
- },
- "shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true,
- "optional": true
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- }
- }
- },
- "slugify": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.0.tgz",
- "integrity": "sha512-FkMq+MQc5hzYgM86nLuHI98Acwi3p4wX+a5BO9Hhw4JdK4L7WueIiZ4tXEobImPqBz2sVcV0+Mu3GRB30IGang=="
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "source-list-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
- "dev": true
- },
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
- "requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-support": {
- "version": "0.5.19",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz",
- "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "sqlstring": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz",
- "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg=="
- },
- "stack-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
- },
- "streamsearch": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
- "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "superagent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz",
- "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==",
- "dev": true,
- "requires": {
- "component-emitter": "^1.3.0",
- "cookiejar": "^2.1.2",
- "debug": "^4.1.1",
- "fast-safe-stringify": "^2.0.7",
- "form-data": "^3.0.0",
- "formidable": "^1.2.2",
- "methods": "^1.1.2",
- "mime": "^2.4.6",
- "qs": "^6.9.4",
- "readable-stream": "^3.6.0",
- "semver": "^7.3.2"
- },
- "dependencies": {
- "mime": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
- "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
- "dev": true
- },
- "qs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
- "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
- "dev": true,
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- }
- }
- },
- "supertest": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.1.3.tgz",
- "integrity": "sha512-v2NVRyP73XDewKb65adz+yug1XMtmvij63qIWHZzSX8tp6wiq6xBLUy4SUAd2NII6wIipOmHT/FD9eicpJwdgQ==",
- "dev": true,
- "requires": {
- "methods": "^1.1.2",
- "superagent": "^6.1.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- }
- },
- "symbol-observable": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz",
- "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==",
- "dev": true
- },
- "symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "table": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz",
- "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==",
- "dev": true,
- "requires": {
- "ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ajv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz",
- "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
- "dev": true
- },
- "terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- }
- },
- "terser": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz",
- "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==",
- "dev": true,
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.7.2",
- "source-map-support": "~0.5.19"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- }
- }
- },
- "terser-webpack-plugin": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz",
- "integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==",
- "dev": true,
- "requires": {
- "jest-worker": "^27.0.2",
- "p-limit": "^3.1.0",
- "schema-utils": "^3.0.0",
- "serialize-javascript": "^5.0.1",
- "source-map": "^0.6.1",
- "terser": "^5.7.0"
- },
- "dependencies": {
- "jest-worker": {
- "version": "27.0.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz",
- "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "dev": true,
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "requires": {
- "any-promise": "^1.0.0"
- }
- },
- "thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
- "requires": {
- "thenify": ">= 3.1.0 < 4"
- }
- },
- "throat": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
- "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "requires": {
- "os-tmpdir": "~1.0.2"
- }
- },
- "tmpl": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
- "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
- },
- "tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "dev": true,
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- },
- "dependencies": {
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
- }
- }
- },
- "tr46": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.1"
- }
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "ts-jest": {
- "version": "26.5.6",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz",
- "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==",
- "dev": true,
- "requires": {
- "bs-logger": "0.x",
- "buffer-from": "1.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^26.1.0",
- "json5": "2.x",
- "lodash": "4.x",
- "make-error": "1.x",
- "mkdirp": "1.x",
- "semver": "7.x",
- "yargs-parser": "20.x"
- },
- "dependencies": {
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- }
- }
- },
- "ts-loader": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz",
- "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^4.0.0",
- "loader-utils": "^2.0.0",
- "micromatch": "^4.0.0",
- "semver": "^7.3.4"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "ts-node": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
- "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
- "dev": true,
- "requires": {
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "source-map-support": "^0.5.17",
- "yn": "3.1.1"
- }
- },
- "tsconfig-paths": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
- "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==",
- "dev": true,
- "requires": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.1",
- "minimist": "^1.2.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- }
- }
- },
- "tsconfig-paths-webpack-plugin": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.1.tgz",
- "integrity": "sha512-n5CMlUUj+N5pjBhBACLq4jdr9cPTitySCjIosoQm0zwK99gmrcTGAfY9CwxRFT9+9OleNWXPRUcxsKP4AYExxQ==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^5.7.0",
- "tsconfig-paths": "^3.9.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "enhanced-resolve": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
- "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- }
- },
- "tapable": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
- "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
- "dev": true
- }
- }
- },
- "tslib": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
- "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
- },
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
- },
- "typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
- "requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "typeorm": {
- "version": "0.2.34",
- "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.34.tgz",
- "integrity": "sha512-FZAeEGGdSGq7uTH3FWRQq67JjKu0mgANsSZ04j3kvDYNgy9KwBl/6RFgMVgiSgjf7Rqd7NrhC2KxVT7I80qf7w==",
- "requires": {
- "@sqltools/formatter": "^1.2.2",
- "app-root-path": "^3.0.0",
- "buffer": "^6.0.3",
- "chalk": "^4.1.0",
- "cli-highlight": "^2.1.10",
- "debug": "^4.3.1",
- "dotenv": "^8.2.0",
- "glob": "^7.1.6",
- "js-yaml": "^4.0.0",
- "mkdirp": "^1.0.4",
- "reflect-metadata": "^0.1.13",
- "sha.js": "^2.4.11",
- "tslib": "^2.1.0",
- "xml2js": "^0.4.23",
- "yargonaut": "^1.1.4",
- "yargs": "^16.2.0",
- "zen-observable-ts": "^1.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- }
- }
- },
- "typescript": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz",
- "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==",
- "dev": true
- },
- "uid-safe": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
- "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
- "requires": {
- "random-bytes": "~1.0.0"
- }
- },
- "uid2": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
- "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I="
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- }
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
- },
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "v8-to-istanbul": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
- "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "validator": {
- "version": "13.6.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz",
- "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==",
- "peer": true
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
- },
- "w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "dev": true,
- "requires": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dev": true,
- "requires": {
- "xml-name-validator": "^3.0.0"
- }
- },
- "walker": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
- "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
- "dev": true,
- "requires": {
- "makeerror": "1.0.x"
- }
- },
- "watchpack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz",
- "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==",
- "dev": true,
- "requires": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "dev": true,
- "requires": {
- "defaults": "^1.0.3"
- }
- },
- "webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
- "dev": true
- },
- "webpack": {
- "version": "5.38.1",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.38.1.tgz",
- "integrity": "sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/eslint-scope": "^3.7.0",
- "@types/estree": "^0.0.47",
- "@webassemblyjs/ast": "1.11.0",
- "@webassemblyjs/wasm-edit": "1.11.0",
- "@webassemblyjs/wasm-parser": "1.11.0",
- "acorn": "^8.2.1",
- "browserslist": "^4.14.5",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.8.0",
- "es-module-lexer": "^0.4.0",
- "eslint-scope": "5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.4",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
- "neo-async": "^2.6.2",
- "schema-utils": "^3.0.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.1.1",
- "watchpack": "^2.2.0",
- "webpack-sources": "^2.3.0"
- },
- "dependencies": {
- "acorn": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
- "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
- "dev": true,
- "peer": true
- },
- "enhanced-resolve": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
- "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
- "dev": true,
- "peer": true,
- "requires": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- }
- },
- "schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
- },
- "tapable": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
- "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
- "dev": true,
- "peer": true
- }
- }
- },
- "webpack-node-externals": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-2.5.2.tgz",
- "integrity": "sha512-aHdl/y2N7PW2Sx7K+r3AxpJO+aDMcYzMQd60Qxefq3+EwhewSbTBqNumOsCE1JsCUNoyfGj5465N0sSf6hc/5w==",
- "dev": true
- },
- "webpack-sources": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz",
- "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==",
- "dev": true,
- "requires": {
- "source-list-map": "^2.0.1",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "requires": {
- "iconv-lite": "0.4.24"
- }
- },
- "whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
- },
- "whatwg-url": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz",
- "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==",
- "dev": true,
- "requires": {
- "lodash": "^4.7.0",
- "tr46": "^2.0.2",
- "webidl-conversions": "^6.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "windows-release": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz",
- "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==",
- "dev": true,
- "requires": {
- "execa": "^4.0.2"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
- "dev": true,
- "requires": {}
- },
- "xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
- },
- "xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- }
- },
- "xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
- },
- "xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
- },
- "y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true
- },
- "yargonaut": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz",
- "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==",
- "requires": {
- "chalk": "^1.1.1",
- "figlet": "^1.1.1",
- "parent-require": "^1.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
- }
- },
- "yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "20.2.7",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz",
- "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw=="
- },
- "yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- },
- "zen-observable": {
- "version": "0.8.15",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
- "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ=="
- },
- "zen-observable-ts": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.0.0.tgz",
- "integrity": "sha512-KmWcbz+9kKUeAQ8btY8m1SsEFgBcp7h/Uf3V5quhan7ZWdjGsf0JcGLULQiwOZibbFWnHkYq8Nn2AZbJabovQg==",
- "requires": {
- "@types/zen-observable": "^0.8.2",
- "zen-observable": "^0.8.15"
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 3db1e081..00000000
--- a/package.json
+++ /dev/null
@@ -1,91 +0,0 @@
-{
- "name": "api",
- "version": "0.0.1",
- "description": "",
- "author": "",
- "private": true,
- "license": "UNLICENSED",
- "scripts": {
- "prebuild": "rimraf dist",
- "build": "nest build",
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
- "start": "nest start",
- "start:dev": "nest start --watch",
- "start:debug": "nest start --debug --watch",
- "start:prod": "node dist/main",
- "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
- "test": "jest",
- "test:watch": "jest --watch",
- "test:cov": "jest --coverage",
- "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
- "test:e2e": "jest --config ./test/jest-e2e.json"
- },
- "dependencies": {
- "@nestjs/common": "^7.6.15",
- "@nestjs/core": "^7.6.15",
- "@nestjs/jwt": "^7.2.0",
- "@nestjs/mapped-types": "*",
- "@nestjs/passport": "^7.1.5",
- "@nestjs/platform-express": "^7.6.15",
- "@nestjs/serve-static": "^2.1.4",
- "@nestjs/typeorm": "^7.1.5",
- "@sendgrid/mail": "^7.4.5",
- "dotenv": "^8.6.0",
- "express-session": "^1.17.2",
- "mysql2": "^2.2.5",
- "passport": "^0.4.1",
- "passport-google-oauth20": "^2.0.0",
- "passport-jwt": "^4.0.0",
- "passport-local": "^1.0.0",
- "passport-twitter": "^0.1.5",
- "randomstring": "^1.2.1",
- "reflect-metadata": "^0.1.13",
- "rimraf": "^3.0.2",
- "rxjs": "^6.6.6",
- "slugify": "^1.6.0",
- "typeorm": "^0.2.34"
- },
- "devDependencies": {
- "@nestjs/cli": "^7.6.0",
- "@nestjs/schematics": "^7.3.0",
- "@nestjs/testing": "^7.6.15",
- "@types/express": "^4.17.11",
- "@types/express-session": "^1.17.3",
- "@types/jest": "^26.0.22",
- "@types/node": "^14.14.36",
- "@types/passport-google-oauth20": "^2.0.8",
- "@types/passport-jwt": "^3.0.5",
- "@types/passport-local": "^1.0.33",
- "@types/supertest": "^2.0.10",
- "@typescript-eslint/eslint-plugin": "^4.19.0",
- "@typescript-eslint/parser": "^4.19.0",
- "eslint": "^7.22.0",
- "eslint-config-prettier": "^8.1.0",
- "eslint-plugin-prettier": "^3.3.1",
- "jest": "^26.6.3",
- "prettier": "^2.2.1",
- "supertest": "^6.1.3",
- "ts-jest": "^26.5.4",
- "ts-loader": "^8.0.18",
- "ts-node": "^9.1.1",
- "tsconfig-paths": "^3.9.0",
- "typescript": "^4.2.3"
- },
- "jest": {
- "moduleFileExtensions": [
- "js",
- "json",
- "ts"
- ],
- "rootDir": "src",
- "testRegex": ".*\\.spec\\.ts$",
- "transform": {
- "^.+\\.(t|j)s$": "ts-jest"
- },
- "collectCoverageFrom": [
- "**/*.(t|j)s"
- ],
- "coverageDirectory": "../coverage",
- "testEnvironment": "node"
- }
-}
diff --git a/sqlc.yml b/sqlc.yml
new file mode 100644
index 00000000..015a08ca
--- /dev/null
+++ b/sqlc.yml
@@ -0,0 +1,20 @@
+# Reference: https://docs.sqlc.dev/en/latest/reference/config.html
+version: "2"
+sql:
+ - engine: postgresql
+ queries: src/database/queries/*.sql
+ schema: src/database/migrations/*.sql
+ database:
+ # uri: postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}
+ # uri: postgresql://postgres:postgres@localhost:5433/postgres
+ gen:
+ go:
+ package: database
+ out: src/database
+ sql_package: pg
+ json_tags_case_style: camel
+ emit_json_tags: true
+ emit_db_tags: true
+ emit_prepared_queries: true
+ emit_enum_valid_method: true
+ emit_all_enum_values: true
diff --git a/src/app.controller.ts b/src/app.controller.ts
deleted file mode 100644
index b1aa817d..00000000
--- a/src/app.controller.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Controller, Get } from '@nestjs/common';
-
-@Controller()
-export class AppController {
- @Get()
- getHello(): string {
- return "GiftTrade API ⚡";
- }
-}
diff --git a/src/app.module.ts b/src/app.module.ts
deleted file mode 100644
index c8f085fc..00000000
--- a/src/app.module.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Module } from '@nestjs/common';
-import { TypeOrmModule } from '@nestjs/typeorm';
-import { AppController } from './app.controller';
-import { UsersModule } from './users/users.module';
-import { GoogleModule } from './google/google.module';
-import { AuthModule } from './auth/auth.module';
-import { ProductsModule } from './products/products.module';
-import { CategoriesModule } from './categories/categories.module';
-import { EventsModule } from './events/events.module';
-import { ServeStaticModule } from '@nestjs/serve-static';
-import { join } from 'path';
-import { ParticipantsModule } from './participants/participants.module';
-import { WishesModule } from './wishes/wishes.module';
-import { LinksModule } from './links/links.module';
-import { DrawsModule } from './draws/draws.module';
-
-@Module({
- imports: [
- TypeOrmModule.forRoot(),
- ServeStaticModule.forRoot({
- rootPath: join(__dirname, '..', 'uploads'),
- serveRoot: '/static',
- }),
- UsersModule,
- GoogleModule,
- AuthModule,
- ProductsModule,
- CategoriesModule,
- EventsModule,
- ParticipantsModule,
- WishesModule,
- LinksModule,
- DrawsModule,
- ],
- controllers: [AppController],
- providers: [],
-})
-export class AppModule {}
diff --git a/src/app/app.go b/src/app/app.go
new file mode 100644
index 00000000..af83eaa7
--- /dev/null
+++ b/src/app/app.go
@@ -0,0 +1,91 @@
+package app
+
+import (
+ "database/sql"
+ "reflect"
+ "strings"
+
+ "github.com/ayaanqui/go-migration-tool/migration_tool"
+ "github.com/giftxtrade/api/src/controllers"
+ "github.com/giftxtrade/api/src/database"
+ "github.com/giftxtrade/api/src/services"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/go-playground/validator/v10"
+ "github.com/gofiber/fiber/v2"
+ "github.com/gofiber/fiber/v2/middleware/cors"
+ "gorm.io/gorm"
+)
+
+type AppBase struct {
+ types.AppContext
+ Service services.Service
+ MigrationDirectory string
+ Querier *database.Queries
+}
+
+type IAppBase interface {
+ NewBaseHandler() *AppBase
+ // database
+ AutoMigrate(db *gorm.DB) error
+ CreateSchemas() *AppBase
+}
+
+// Given app.AppBase.DB, and app.AppBase.Router
+// creates db migrations, db services, oauth, and routes
+func (app *AppBase) NewBaseHandler() *AppBase {
+ app.Validator = validator.New()
+ app.Validator.RegisterTagNameFunc(func(field reflect.StructField) string {
+ name := strings.SplitN(field.Tag.Get("json"), ",", 2)[0]
+ if name == "-" {
+ return ""
+ }
+ return name
+ })
+
+ m := migration_tool.New(app.DB, &migration_tool.Config{
+ TableName: "migration",
+ Directory: app.MigrationDirectory,
+ })
+ m.RunMigration()
+
+ // initialize services
+ app.Service = services.New(app.DB, app.Querier, app.Validator, app.Tokens)
+ // initialize controllers
+ controllers.New(app.AppContext, app.Querier, app.Service)
+ return app
+}
+
+func New(conn *sql.DB, server *fiber.App) *AppBase {
+ app := AppBase{}
+ app.DB = conn
+ app.Server = server
+ server.Use(cors.New(cors.Config{
+ AllowOrigins: strings.Join([]string{
+ "https://giftxtrade.com",
+ "http://localhost:3000", // TODO: allow only in development
+ }, ","),
+ }))
+
+ app.Querier = database.New(conn)
+ // initialize tokens
+ tokens, tokens_err := utils.ParseTokens()
+ if tokens_err != nil {
+ panic(tokens_err)
+ }
+ app.Tokens = &tokens
+ app.MigrationDirectory = "./src/database/migrations"
+ return app.NewBaseHandler()
+}
+
+func NewMock(conn *sql.DB, server *fiber.App) *AppBase {
+ app := AppBase{}
+ app.DB = conn
+ app.Server = server
+ app.Querier = database.New(conn)
+ app.Tokens = &types.Tokens{
+ JwtKey: "my-secret-jwt-token",
+ }
+ app.MigrationDirectory = "../database/migrations"
+ return app.NewBaseHandler()
+}
\ No newline at end of file
diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts
deleted file mode 100644
index cd71e49a..00000000
--- a/src/auth/auth.controller.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Controller, Get, UseGuards, Request } from '@nestjs/common';
-import { AuthService } from './auth.service';
-import { JwtAuthGuard } from './jwt-auth.guard';
-
-@Controller('auth')
-export class AuthController {
- constructor(private authService: AuthService) { }
-
- @UseGuards(JwtAuthGuard)
- @Get('profile')
- getProfile(@Request() req) {
- return req.user;
- }
-}
diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts
deleted file mode 100644
index bed0397b..00000000
--- a/src/auth/auth.module.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Module } from '@nestjs/common';
-import { UsersModule } from 'src/users/users.module';
-import { AuthController } from './auth.controller';
-import { AuthService } from './auth.service';
-import { JwtModule } from '@nestjs/jwt';
-import { PassportModule } from '@nestjs/passport';
-import { JWT } from '../../auth-tokens.json';
-import { LocalStrategy } from './local.strategy';
-import { JwtStrategy } from './jwt.strategy';
-
-@Module({
- imports: [
- UsersModule,
- PassportModule,
- JwtModule.register({
- secret: JWT.SECRET,
- signOptions: { expiresIn: '60 days' },
- })
- ],
- controllers: [AuthController],
- providers: [AuthService, LocalStrategy, JwtStrategy],
- exports: [AuthService]
-})
-export class AuthModule {}
diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts
deleted file mode 100644
index 051d6cf3..00000000
--- a/src/auth/auth.service.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Injectable } from '@nestjs/common';
-import { User } from 'src/users/entities/user.entity';
-import { UsersService } from 'src/users/users.service';
-import { JwtService } from '@nestjs/jwt';
-import { CreateUserDto } from '../users/dto/create-user.dto';
-import JwtPayload from 'src/util/jwtPayload';
-import { JwtAuthReturn } from '../util/jwtPayload';
-
-@Injectable()
-export class AuthService {
- constructor(
- private readonly userServices: UsersService,
- private readonly jwtService: JwtService,
- ) {}
-
- async validateUser(email: string): Promise {
- return this.userServices.findOne(email);
- }
-
- async login(
- createUser: CreateUserDto,
- gToken: string,
- ): Promise {
- const user = await this.userServices.findOneOrCreate(createUser);
- const payload: JwtPayload = { user, gToken };
- return {
- user: user,
- accessToken: this.jwtService.sign(payload),
- gToken,
- loggedIn: true,
- };
- }
-}
diff --git a/src/auth/jwt-auth.guard.ts b/src/auth/jwt-auth.guard.ts
deleted file mode 100644
index c529411c..00000000
--- a/src/auth/jwt-auth.guard.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Injectable } from '@nestjs/common';
-import { AuthGuard } from '@nestjs/passport';
-
-@Injectable()
-export class JwtAuthGuard extends AuthGuard('jwt') { }
\ No newline at end of file
diff --git a/src/auth/jwt.strategy.ts b/src/auth/jwt.strategy.ts
deleted file mode 100644
index 7727d073..00000000
--- a/src/auth/jwt.strategy.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ExtractJwt, Strategy } from 'passport-jwt';
-import { PassportStrategy } from '@nestjs/passport';
-import { Injectable, UnauthorizedException } from '@nestjs/common';
-import { AuthService } from './auth.service';
-import { JWT } from '../../auth-tokens.json';
-import { User } from 'src/users/entities/user.entity';
-import JwtPayload from 'src/util/jwtPayload';
-
-@Injectable()
-export class JwtStrategy extends PassportStrategy(Strategy) {
- constructor(private authServices: AuthService) {
- super({
- jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
- ignoreExpiration: false,
- secretOrKey: JWT.SECRET,
- });
- }
-
- async validate(payload: JwtPayload): Promise {
- const user: User = await this.authServices.validateUser(payload.user.email);
- if (user == null)
- throw new UnauthorizedException();
- return payload;
- }
-}
\ No newline at end of file
diff --git a/src/auth/local-auth.guard.ts b/src/auth/local-auth.guard.ts
deleted file mode 100644
index 134bcb17..00000000
--- a/src/auth/local-auth.guard.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-
-import { Injectable } from '@nestjs/common';
-import { AuthGuard } from '@nestjs/passport';
-
-@Injectable()
-export class LocalAuthGuard extends AuthGuard('local') { }
diff --git a/src/auth/local.strategy.ts b/src/auth/local.strategy.ts
deleted file mode 100644
index e4ed9d2c..00000000
--- a/src/auth/local.strategy.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Strategy } from 'passport-local';
-import { PassportStrategy } from '@nestjs/passport';
-import { Injectable, UnauthorizedException } from '@nestjs/common';
-import { AuthService } from './auth.service';
-import { User } from 'src/users/entities/user.entity';
-
-@Injectable()
-export class LocalStrategy extends PassportStrategy(Strategy) {
- constructor(private authService: AuthService) {
- super();
- }
-
- async validate(email: string, password: string): Promise {
- const user = await this.authService.validateUser(email);
- if (!user) {
- throw new UnauthorizedException();
- }
- return user;
- }
-}
diff --git a/src/categories/categories.controller.spec.ts b/src/categories/categories.controller.spec.ts
deleted file mode 100644
index 6b4023f6..00000000
--- a/src/categories/categories.controller.spec.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { CategoriesController } from './categories.controller';
-
-describe('CategoriesController', () => {
- let controller: CategoriesController;
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- controllers: [CategoriesController],
- }).compile();
-
- controller = module.get(CategoriesController);
- });
-
- it('should be defined', () => {
- expect(controller).toBeDefined();
- });
-});
diff --git a/src/categories/categories.controller.ts b/src/categories/categories.controller.ts
deleted file mode 100644
index 219e24f9..00000000
--- a/src/categories/categories.controller.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Controller, Get } from '@nestjs/common';
-import { CategoriesService } from './categories.service';
-
-@Controller('categories')
-export class CategoriesController {
- constructor(private readonly categoriesService: CategoriesService) { }
-
- @Get()
- async findAll() {
- return await this.categoriesService.findAll();
- }
-}
diff --git a/src/categories/categories.module.ts b/src/categories/categories.module.ts
deleted file mode 100644
index ef0db6e1..00000000
--- a/src/categories/categories.module.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Module } from '@nestjs/common';
-import { TypeOrmModule } from '@nestjs/typeorm';
-import { CategoriesService } from './categories.service';
-import { Category } from './entities/category.entity';
-import { CategoriesController } from './categories.controller';
-
-@Module({
- imports: [
- TypeOrmModule.forFeature([Category]),
- ],
- providers: [CategoriesService],
- exports: [CategoriesService],
- controllers: [CategoriesController]
-})
-export class CategoriesModule { }
diff --git a/src/categories/categories.service.spec.ts b/src/categories/categories.service.spec.ts
deleted file mode 100644
index 9095d781..00000000
--- a/src/categories/categories.service.spec.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { CategoriesService } from './categories.service';
-
-describe('CategoriesService', () => {
- let service: CategoriesService;
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [CategoriesService],
- }).compile();
-
- service = module.get(CategoriesService);
- });
-
- it('should be defined', () => {
- expect(service).toBeDefined();
- });
-});
diff --git a/src/categories/categories.service.ts b/src/categories/categories.service.ts
deleted file mode 100644
index 0ddfbefb..00000000
--- a/src/categories/categories.service.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Injectable } from '@nestjs/common';
-import { InjectRepository } from '@nestjs/typeorm';
-import { Repository } from 'typeorm';
-import { Category } from './entities/category.entity';
-
-@Injectable()
-export class CategoriesService {
- constructor(
- @InjectRepository(Category)
- private readonly categoryRepository: Repository,
- ) { }
-
- async insert(name: string, description?: string, categoryUrl?: string): Promise {
- const category: Category = new Category();
- category.name = name;
- category.description = description ? description : '';
- category.categoryUrl = categoryUrl ? categoryUrl : '';
- return await category.save();
- }
-
- async findAll(): Promise {
- return await this.categoryRepository.find();
- }
-
- async findOne(name: string): Promise {
- return await this.categoryRepository
- .findOne({ where: { name: name } });
- }
-
- async findOneLike(name: string): Promise {
- name = name.toLowerCase().trim();
- return await this.categoryRepository
- .createQueryBuilder('categories')
- .where(`
- name like :name or
- description like :name
- `, { name: `%${name}%` })
- .getOne();
- }
-
- async findOrCreate(name: string, description?: string, categoryUrl?: string): Promise {
- const category = await this.findOne(name);
- if (!category)
- return await this.insert(name);
- return category;
- }
-
- async findLikeOrCreate(name: string, description?: string, categoryUrl?: string): Promise {
- const category = await this.findOneLike(name);
- if (!category)
- return await this.insert(name);
- return category;
- }
-}
diff --git a/src/categories/entities/category.entity.ts b/src/categories/entities/category.entity.ts
deleted file mode 100644
index 7ef4fdb0..00000000
--- a/src/categories/entities/category.entity.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Product } from "src/products/entities/product.entity";
-import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn, Index } from 'typeorm';
-
-@Entity('categories')
-export class Category extends BaseEntity {
- @Index({ unique: true })
- @PrimaryGeneratedColumn()
- id: number;
-
- @Column()
- name: string;
-
- @Column('text', { nullable: true })
- description: string;
-
- @Column()
- categoryUrl: string;
-
- @OneToMany(() => Product, product => product.category)
- products: Product[];
-}
diff --git a/src/controllers/auth_controller.go b/src/controllers/auth_controller.go
new file mode 100644
index 00000000..2e1a3721
--- /dev/null
+++ b/src/controllers/auth_controller.go
@@ -0,0 +1,53 @@
+package controllers
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "net/http"
+
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+ "google.golang.org/api/oauth2/v2"
+)
+
+// [GET] /auth/profile (authentication required)
+func (ctr Controller) GetProfile(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ return utils.DataResponse(c, auth)
+}
+
+func (ctr *Controller) GoogleVerify(c *fiber.Ctx) error {
+ access_token := c.Query("access_token", "")
+ if access_token == "" {
+ return utils.FailResponse(c, "no access token provided")
+ }
+
+ res, err := http.Get(fmt.Sprintf("https://www.googleapis.com/oauth2/v2/userinfo?access_token=%s", access_token))
+ if err != nil {
+ return utils.FailResponse(c, "invalid access token")
+ }
+ userDataRaw, err := io.ReadAll(res.Body)
+ if err != nil {
+ return utils.FailResponse(c, "could not read body")
+ }
+ var userData oauth2.Userinfo
+ if err := json.Unmarshal(userDataRaw, &userData); err != nil {
+ return utils.FailResponse(c, "could not parse response")
+ }
+
+ check_user := types.CreateUser{
+ Email: userData.Email,
+ Name: userData.Name,
+ ImageUrl: userData.Picture,
+ }
+ auth, created, err := ctr.Service.UserService.GenerateAuthUser(c.Context(), check_user)
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+ if created {
+ return utils.DataResponseCreated(c, auth)
+ }
+ return utils.DataResponse(c, auth)
+}
diff --git a/src/controllers/controller.go b/src/controllers/controller.go
new file mode 100644
index 00000000..babcd5cf
--- /dev/null
+++ b/src/controllers/controller.go
@@ -0,0 +1,112 @@
+package controllers
+
+import (
+ "context"
+ "fmt"
+ "strconv"
+
+ "github.com/giftxtrade/api/src/database"
+ "github.com/giftxtrade/api/src/services"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+)
+
+type Controller struct {
+ types.AppContext
+ Service services.Service
+ Querier *database.Queries
+}
+
+type IController interface {
+ New(app_ctx types.AppContext, service services.Service) Controller
+}
+
+func New(app_ctx types.AppContext, querier *database.Queries, service services.Service) Controller {
+ c := Controller{
+ AppContext: app_ctx,
+ Service: service,
+ Querier: querier,
+ }
+ server := app_ctx.Server
+
+ // create routes
+ server.Get("/", func(c *fiber.Ctx) error {
+ return utils.JsonResponse(c, types.Response{
+ Message: "GiftTrade REST API ⚡",
+ })
+ })
+ auth := server.Group("/auth")
+ {
+ auth.Get("/profile", c.UseJwtAuth, c.GetProfile)
+ auth.Get("/google/verify", c.GoogleVerify)
+ }
+ products := server.Group("/products")
+ {
+ products.Post("", c.UseAdminOnly, c.CreateProduct)
+ products.Get("", c.UseJwtAuth, c.FindAllProducts)
+ products.Get("/:id", c.UseJwtAuth, c.FindProduct)
+ }
+ events := server.Group("/events")
+ {
+ events.Get("/verify-invite-code/:invite_code", c.VerifyEventLinkCode)
+ events.Get("/join/:invite_code", c.UseJwtAuth, c.JoinEventViaInviteCode)
+ events.Post("", c.UseJwtAuth, c.CreateEvent)
+ events.Get("", c.UseJwtAuth, c.GetEvents)
+ events.Get("/invites", c.UseJwtAuth, c.GetInvites)
+ events.Get("/invites/accept/:event_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.AcceptEventInvite)
+ events.Get("/invites/decline/:event_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.DeclineEventInvite)
+ events.Get("/get-link/:event_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.GetEventLink)
+ events.Get("/:event_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.GetEventById)
+ events.Patch("/:event_id", c.UseJwtAuth, c.UseEventOrganizerAuthWithParam, c.UpdateProduct)
+ events.Delete("/:event_id", c.UseJwtAuth, c.UseEventOrganizerAuthWithParam, c.DeleteEvent)
+ }
+ participants := server.Group("/participants")
+ {
+ participants.Patch("/manage/:event_id", c.UseJwtAuth, c.UseEventOrganizerAuthWithParam, c.UseEventParticipantAuthWithQuery, c.ManageParticipantUpdate)
+ participants.Delete("/manage/:event_id", c.UseJwtAuth, c.UseEventOrganizerAuthWithParam, c.UseEventParticipantAuthWithQuery, c.ManageParticipantRemoval)
+ participants.Get("/:event_id/:participant_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.UseEventParticipantAuthWithParam, c.GetParticipantById)
+ participants.Patch("/:event_id/:participant_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.UseEventParticipantAuthWithParam, c.UpdateMeParticipant)
+ }
+ wishes := server.Group("/wishes")
+ {
+ wishes.Post("/:event_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.CreateWish)
+ wishes.Delete("/:event_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.DeleteWish)
+ wishes.Get("/:event_id/:participant_id", c.UseJwtAuth, c.UseEventAuthWithParam, c.UseEventParticipantAuthWithParam, c.GetWishes)
+ }
+ server.Get("*", func(c *fiber.Ctx) error {
+ return utils.ResponseWithStatusCode(c, fiber.ErrNotFound.Code, types.Errors{
+ Errors: []string{"resource not found"},
+ })
+ })
+ return c
+}
+
+func SetUserContext(c *fiber.Ctx, key interface{}, value interface{}) {
+ c.SetUserContext(context.WithValue(c.UserContext(), key, value))
+}
+
+// Given a `fiber.Ctx.UserContext`, find and return the auth struct using the types.AuthKey key
+func GetAuthContext(user_context context.Context) types.Auth {
+ auth := user_context.Value(AUTH_KEY).(types.Auth)
+ return auth
+}
+
+// Returns the even_id based on the route `*/:event_id/*` param
+func ParseEventIdFromRoute(c *fiber.Ctx) (event_id int64, error error) {
+ id_raw := c.Params("event_id")
+ id, err := strconv.ParseInt(id_raw, 10, 64)
+ if err != nil {
+ return 0, fmt.Errorf("invalid event id")
+ }
+ return id, nil
+}
+
+func GetEventIdFromContext(user_context context.Context) int64 {
+ id := user_context.Value(EVENT_ID_PARAM_KEY).(int64)
+ return id
+}
+
+func GetParticipantFromContext(user_context context.Context) database.Participant {
+ return user_context.Value(PARTICIPANT_OB_KEY).(database.Participant)
+}
diff --git a/src/controllers/events_controller.go b/src/controllers/events_controller.go
new file mode 100644
index 00000000..df941f92
--- /dev/null
+++ b/src/controllers/events_controller.go
@@ -0,0 +1,260 @@
+package controllers
+
+import (
+ "database/sql"
+ "fmt"
+ "time"
+
+ "github.com/giftxtrade/api/src/database"
+ "github.com/giftxtrade/api/src/mappers"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+)
+
+const EVENT_LINK_CODE_LEN = 15
+
+func (ctr *Controller) CreateEvent(c *fiber.Ctx) error {
+ auth_user := GetAuthContext(c.UserContext())
+ var input types.CreateEvent
+ if c.BodyParser(&input) != nil {
+ return utils.FailResponse(c, "could not parse body data")
+ }
+ if err := ctr.Validator.Struct(input); err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+
+ event, err := ctr.Service.EventService.CreateEvent(c.Context(), &auth_user.User, input)
+ if err != nil {
+ return utils.FailResponse(c, "could not create event", err.Error())
+ }
+ return utils.DataResponseCreated(c, event)
+}
+
+func (ctr *Controller) GetEvents(c *fiber.Ctx) error {
+ auth_user := GetAuthContext(c.UserContext())
+ events, err := ctr.Service.EventService.FindEventsForUser(c.Context(), auth_user.User)
+ if err != nil {
+ return utils.FailResponse(c, "could not return events")
+ }
+ return utils.DataResponse(c, events)
+}
+
+func (ctr *Controller) GetEventById(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+
+ event, err := ctr.Service.EventService.FindEventById(c.Context(), auth.User, event_id)
+ if err != nil {
+ return utils.FailResponse(c, "could not load event")
+ }
+ return utils.DataResponse(c, event)
+}
+
+func (ctr *Controller) GetInvites(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ rows, err := ctr.Querier.FindEventInvites(c.Context(), auth.User.Email)
+ if err != nil {
+ return utils.FailResponse(c, "could not fetch invites")
+ }
+ return utils.DataResponse(c, mappers.DbEventsToEventsSimple(rows))
+}
+
+func (ctr *Controller) AcceptEventInvite(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+
+ tx, err := ctr.DB.BeginTx(c.Context(), nil)
+ if err != nil {
+ tx.Rollback()
+ return utils.FailResponse(c, "transaction error. please try again")
+ }
+ q := ctr.Querier.WithTx(tx)
+ defer q.Close()
+
+ participant, err := q.AcceptEventInvite(c.Context(), database.AcceptEventInviteParams{
+ EventID: event_id,
+ UserID: sql.NullInt64{
+ Valid: true,
+ Int64: auth.User.ID,
+ },
+ Email: auth.User.Email,
+ })
+ if err != nil {
+ tx.Rollback()
+ return utils.FailResponse(c, "could not accept invite for event")
+ }
+
+ event_rows, err := q.FindEventById(c.Context(), participant.EventID)
+ if err != nil {
+ tx.Rollback()
+ return utils.FailResponse(c, "could not fetch event")
+ }
+ if err := tx.Commit(); err != nil {
+ tx.Rollback()
+ return utils.FailResponse(c, "could not save changes")
+ }
+ event := mappers.DbFindEventByIdToEvent(event_rows)
+ return utils.DataResponse(c, event)
+}
+
+func (ctr *Controller) DeclineEventInvite(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+ _, err := ctr.Querier.DeclineEventInvite(c.Context(), database.DeclineEventInviteParams{
+ EventID: event_id,
+ Email: auth.User.Email,
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not decline event invitation. please try again.")
+ }
+ return utils.DataResponse(c, types.DeleteStatus{
+ Deleted: true,
+ })
+}
+
+// [PATCH] events/:event_id - Organizer Auth
+func (ctr *Controller) UpdateProduct(c *fiber.Ctx) error {
+ event_id := GetEventIdFromContext(c.UserContext())
+ var input types.UpdateEvent
+ if c.BodyParser(&input) != nil {
+ return utils.FailResponse(c, "could not parse body data")
+ }
+ if err := ctr.Validator.Struct(input); err != nil {
+ return utils.FailResponse(c, "validation errors with input", err.Error())
+ }
+
+ _, err := ctr.Querier.UpdateEvent(c.Context(), database.UpdateEventParams{
+ ID: event_id,
+ Name: sql.NullString{
+ Valid: input.Name != "",
+ String: input.Name,
+ },
+ Description: sql.NullString{
+ Valid: input.Description != "",
+ String: input.Description,
+ },
+ Budget: sql.NullString{
+ Valid: input.Budget != 0,
+ String: fmt.Sprintf("%f", input.Budget),
+ },
+ DrawAt: sql.NullTime{
+ Valid: !input.DrawAt.IsZero(),
+ Time: input.DrawAt,
+ },
+ CloseAt: sql.NullTime{
+ Valid: !input.CloseAt.IsZero(),
+ Time: input.CloseAt,
+ },
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not update event")
+ }
+
+ event_row, err := ctr.Querier.FindEventById(c.Context(), event_id)
+ if err != nil {
+ return utils.FailResponse(c, "could not return event")
+ }
+ event := mappers.DbFindEventByIdToEvent(event_row)
+ return utils.DataResponse(c, event)
+}
+
+// [DELETE] /events/:event_id - Uses organizer auth
+func (ctr *Controller) DeleteEvent(c *fiber.Ctx) error {
+ event_id := GetEventIdFromContext(c.UserContext())
+ _, err := ctr.Querier.DeleteEvent(c.Context(), event_id)
+ if err != nil {
+ return utils.FailResponse(c, "event could not be deleted. please try again.")
+ }
+ return utils.DataResponse(c, types.DeleteStatus{
+ Deleted: true,
+ })
+}
+
+// [GET] /events/:event_id/get-link - Uses event participant auth
+func (ctr *Controller) GetEventLink(c *fiber.Ctx) error {
+ event_id := GetEventIdFromContext(c.UserContext())
+ event, _ := ctr.Querier.FindEventSimple(c.Context(), event_id)
+ code, _ := utils.GenerateRandomUrlEncodedString(EVENT_LINK_CODE_LEN)
+ link, err := ctr.Querier.CreateLink(c.Context(), database.CreateLinkParams{
+ EventID: event_id,
+ Code: code,
+ ExpirationDate: event.DrawAt,
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not create link for event")
+ }
+ return utils.DataResponseCreated(c, mappers.DbLinkToLink(link, nil))
+}
+
+func (Ctr *Controller) get_invite_code(c *fiber.Ctx) (code string, error error) {
+ invite_code := c.Params("invite_code")
+ if len(invite_code) != EVENT_LINK_CODE_LEN {
+ return "", fmt.Errorf("invalid invite code")
+ }
+ return invite_code, nil
+}
+
+func (ctr *Controller) VerifyEventLinkCode(c *fiber.Ctx) error {
+ invite_code, err := ctr.get_invite_code(c)
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+ res, err := ctr.Querier.FindLinkWithEventByCode(c.Context(), invite_code)
+ if err != nil {
+ return utils.FailResponse(c, "invite code expired or invalid")
+ }
+ return utils.DataResponse(c, mappers.DbLinkToLink(res.Link, &res.Event))
+}
+
+func (ctr *Controller) JoinEventViaInviteCode(c *fiber.Ctx) error {
+ invite_code, err := ctr.get_invite_code(c)
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+ res, err := ctr.Querier.FindLinkByCode(c.Context(), invite_code)
+ if err != nil || res.ExpirationDate.Before(time.Now()) {
+ return utils.FailResponse(c, "invite code is expired or invalid")
+ }
+
+ auth := GetAuthContext(c.UserContext())
+ _, err = ctr.Querier.VerifyEventWithEmailOrUser(c.Context(), database.VerifyEventWithEmailOrUserParams{
+ EventID: res.EventID,
+ UserID: sql.NullInt64{
+ Valid: true,
+ Int64: auth.User.ID,
+ },
+ Email: sql.NullString{
+ Valid: true,
+ String: auth.User.Email,
+ },
+ })
+ // auth user is already a participant in the event
+ if err == nil {
+ p, _ := ctr.Querier.FindParticipantFromEventIdAndUser(c.Context(), database.FindParticipantFromEventIdAndUserParams{
+ EventID: res.EventID,
+ UserID: sql.NullInt64{
+ Valid: true,
+ Int64: auth.User.ID,
+ },
+ })
+ return utils.DataResponse(c, mappers.DbParticipantToParticipant(p, nil, nil))
+ }
+
+ participant, err := ctr.Querier.CreateParticipant(c.Context(), database.CreateParticipantParams{
+ Name: auth.User.Name,
+ Email: auth.User.Email,
+ Organizer: false,
+ Participates: true,
+ Accepted: true,
+ EventID: res.EventID,
+ UserID: sql.NullInt64{
+ Valid: true,
+ Int64: auth.User.ID,
+ },
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not join event")
+ }
+ return utils.DataResponseCreated(c, mappers.DbParticipantToParticipant(participant, nil, nil))
+}
diff --git a/src/controllers/middleware.go b/src/controllers/middleware.go
new file mode 100644
index 00000000..f83b683c
--- /dev/null
+++ b/src/controllers/middleware.go
@@ -0,0 +1,180 @@
+package controllers
+
+import (
+ "context"
+ "database/sql"
+ "fmt"
+ "strconv"
+
+ "github.com/giftxtrade/api/src/database"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+)
+
+const AUTH_REQ string = "authorization required"
+const AUTH_KEY types.AuthKeyType = "auth"
+const AUTH_HEADER string = "Authorization"
+const EVENT_ID_PARAM_KEY types.EventIdParamKeyType = "EVENT_ID_PARAM"
+const PARTICIPANT_OB_KEY string = "PARTICIPANT_OB"
+
+// Authentication middleware. Saves user data in request user context with the `AUTH_KEY` key
+func (ctx *Controller) UseJwtAuth(c *fiber.Ctx) error {
+ if err := ctx.authenticate_user(c); err != nil {
+ return utils.FailResponseUnauthorized(c, AUTH_REQ)
+ }
+ return c.Next()
+}
+
+// Admin only access middleware (uses UseJwtAuth)
+func (ctx *Controller) UseAdminOnly(c *fiber.Ctx) error {
+ if err := ctx.authenticate_user(c); err != nil {
+ return utils.FailResponseUnauthorized(c, AUTH_REQ)
+ }
+
+ auth := GetAuthContext(c.UserContext())
+ if !auth.User.Admin {
+ return utils.FailResponseUnauthorized(c, "access for admin users only")
+ }
+ return c.Next()
+}
+
+func (ctx Controller) authenticate_user(c *fiber.Ctx) error {
+ authorization := c.Get(AUTH_HEADER)
+ // Parse bearer token
+ raw_token, err := utils.GetBearerToken(authorization)
+ if err != nil {
+ return err
+ }
+
+ // Parse JWT
+ claims, err := utils.GetJwtClaims(raw_token, ctx.Tokens.JwtKey)
+ if err != nil {
+ return err
+ }
+
+ // Get user from id, username, email
+ id_raw, email := claims["id"].(string), claims["email"].(string)
+ id, err := strconv.ParseInt(id_raw, 10, 64)
+ if err != nil {
+ return fmt.Errorf("invalid claim id")
+ }
+ user, err := ctx.Querier.FindUserByIdAndEmail(c.Context(), database.FindUserByIdAndEmailParams{
+ ID: id,
+ Email: email,
+ })
+ if err != nil {
+ return err
+ }
+ SetUserContext(c, AUTH_KEY, types.Auth{
+ Token: raw_token,
+ User: types.User{
+ ID: user.ID,
+ Name: user.Name,
+ Email: user.Email,
+ ImageUrl: user.ImageUrl,
+ Active: user.Active,
+ Phone: user.Phone.String,
+ Admin: user.Admin,
+ },
+ })
+ return nil
+}
+
+// Verifies if auth user is a valid participant of an event
+// based on the URL param `:event_id`.
+//
+// Saves the event_id (int64) in the request user context with the `EVENT_ID_PARAM_KEY` key
+func (ctr *Controller) UseEventAuthWithParam(c *fiber.Ctx) error {
+ auth_user := GetAuthContext(c.UserContext())
+ id, err := ParseEventIdFromRoute(c)
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+
+ event_id, err := ctr.Querier.VerifyEventWithEmailOrUser(c.Context(), database.VerifyEventWithEmailOrUserParams{
+ EventID: id,
+ UserID: sql.NullInt64{
+ Valid: true,
+ Int64: auth_user.User.ID,
+ },
+ Email: sql.NullString{
+ Valid: true,
+ String: auth_user.User.Email,
+ },
+ })
+ if err != nil || event_id != id {
+ return utils.FailResponseNotFound(c, "event not found")
+ }
+ SetUserContext(c, EVENT_ID_PARAM_KEY, event_id)
+ return c.Next()
+}
+
+// Verifies if the auth user is a valid organizer of an event
+// based on the URL param `:event_id`.
+//
+// Saves the event_id (int64) value in the request user context with the `EVENT_ID_PARAM_KEY` key
+func (ctr *Controller) UseEventOrganizerAuthWithParam(c *fiber.Ctx) error {
+ auth_user := GetAuthContext(c.UserContext())
+ id, err := ParseEventIdFromRoute(c)
+ if err != nil {
+ return utils.FailResponseNotFound(c, err.Error())
+ }
+
+ event_id, err := ctr.Querier.VerifyEventForUserAsOrganizer(c.Context(), database.VerifyEventForUserAsOrganizerParams{
+ EventID: id,
+ UserID: auth_user.User.ID,
+ })
+ if err != nil || event_id != id {
+ return utils.FailResponseNotFound(c, "event not found")
+ }
+ SetUserContext(c, EVENT_ID_PARAM_KEY, event_id)
+ return c.Next()
+}
+
+func (ctr *Controller) handleParticipantFromId(context context.Context, event_id int64, participant_id_raw string) (database.Participant, error) {
+ participant_id, err := strconv.ParseInt(participant_id_raw, 10, 64)
+ if err != nil {
+ return database.Participant{}, fmt.Errorf("invalid participant id")
+ }
+
+ // verify if participant exists in event
+ participant, err := ctr.Querier.FindParticipantWithIdAndEventId(context, database.FindParticipantWithIdAndEventIdParams{
+ EventID: event_id,
+ ParticipantID: participant_id,
+ })
+ if err != nil {
+ return database.Participant{}, fmt.Errorf("participant does not exist on the event")
+ }
+ return participant, nil
+}
+
+// Verifies if the query param participantId (?participantId=int64) is a valid participant of an event
+// based on the URL param `:event_id`.
+//
+// Saves the participant object (database.Participant) value in the request user context with the `PARTICIPANT_QUERY_KEY` key.
+// NOTE: This middleware MUST only be used following either `UseEventAuthWithParam` or `UseEventOrganizerAuthWithParam`
+func (ctr *Controller) UseEventParticipantAuthWithQuery(c *fiber.Ctx) error {
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant, err := ctr.handleParticipantFromId(c.Context(), event_id, c.Query("participantId"))
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+ SetUserContext(c, PARTICIPANT_OB_KEY, participant)
+ return c.Next()
+}
+
+// Verifies if the URL param participant_id (/:participant_id) is a valid participant of an event
+// based on the URL param `:event_id`.
+//
+// Saves the participant object (database.Participant) value in the request user context with the `PARTICIPANT_QUERY_KEY` key.
+// NOTE: This middleware MUST only be used following either `UseEventAuthWithParam` or `UseEventOrganizerAuthWithParam`
+func (ctr *Controller) UseEventParticipantAuthWithParam(c *fiber.Ctx) error {
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant, err := ctr.handleParticipantFromId(c.Context(), event_id, c.Params("participant_id"))
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+ SetUserContext(c, PARTICIPANT_OB_KEY, participant)
+ return c.Next()
+}
diff --git a/src/controllers/participants_controller.go b/src/controllers/participants_controller.go
new file mode 100644
index 00000000..84ae7db6
--- /dev/null
+++ b/src/controllers/participants_controller.go
@@ -0,0 +1,122 @@
+package controllers
+
+import (
+ "database/sql"
+
+ "github.com/giftxtrade/api/src/database"
+ "github.com/giftxtrade/api/src/mappers"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+)
+
+func (ctr *Controller) ManageParticipantUpdate(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant := c.UserContext().Value(PARTICIPANT_OB_KEY).(database.Participant)
+
+ // parse/validate body
+ input, err := utils.ParseAndValidateBody[types.PatchParticipant](ctr.Validator, c.Body())
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+
+ patch_data := database.UpdateParticipantStatusParams{
+ EventID: event_id,
+ ParticipantID: participant.ID,
+ }
+ if input.Organizer != nil {
+ if participant.UserID.Int64 == auth.User.ID {
+ return utils.FailResponse(c, "event organizer cannot modify their own 'organizer' status")
+ }
+ patch_data.Organizer = sql.NullBool{
+ Valid: *input.Organizer != participant.Organizer,
+ Bool: *input.Organizer,
+ }
+ }
+ if input.Participates != nil {
+ patch_data.Participates = sql.NullBool{
+ Valid: *input.Participates != participant.Participates,
+ Bool: *input.Participates,
+ }
+ }
+ patched_participant, err := ctr.Querier.UpdateParticipantStatus(c.Context(), patch_data)
+ if err != nil {
+ utils.FailResponse(c, "could not update participant")
+ }
+ return utils.DataResponse(c, mappers.DbParticipantToParticipant(patched_participant, nil, nil))
+}
+
+func (ctr *Controller) ManageParticipantRemoval(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant := c.UserContext().Value(PARTICIPANT_OB_KEY).(database.Participant)
+ if participant.UserID.Int64 == auth.User.ID {
+ utils.FailResponse(c, "event organizer cannot remove themselves")
+ }
+ _, err := ctr.Querier.DeleteParticipantByIdAndEventId(c.Context(), database.DeleteParticipantByIdAndEventIdParams{
+ EventID: event_id,
+ ParticipantID: participant.ID,
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not remove participant")
+ }
+ return utils.DataResponse(c, mappers.DbParticipantToParticipant(participant, nil, nil))
+}
+
+func (ctr *Controller) GetParticipantById(c *fiber.Ctx) error {
+ participant := c.UserContext().Value(PARTICIPANT_OB_KEY).(database.Participant)
+ rows, err := ctr.Querier.FindParticipantUserWithFullEventById(c.Context(), participant.ID)
+ if err != nil {
+ return utils.FailResponseNotFound(c, "could not find participant with the id", err.Error())
+ }
+ if len(rows) <= 0 {
+ return utils.FailResponse(c, "result error")
+ }
+ mapped_participant := mappers.DbParticipantUserToParticipant(rows[0].ParticipantUser, &rows[0].Event)
+ participants := make([]types.Participant, len(rows))
+ for i, row := range rows {
+ participants[i] = mappers.DbParticipantUserToParticipant(row.ParticipantUser_2, nil)
+ }
+ mapped_participant.Event.Participants = participants
+ return utils.DataResponse(c, mapped_participant)
+}
+
+func (ctr *Controller) UpdateMeParticipant(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ participant := c.UserContext().Value(PARTICIPANT_OB_KEY).(database.Participant)
+ if !participant.UserID.Valid || participant.UserID.Int64 != auth.User.ID {
+ return utils.FailResponse(c, "action on participant not allowed")
+ }
+ input, err := utils.ParseAndValidateBody[types.PatchParticipant](ctr.Validator, c.Body())
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+ values := database.PatchParticipantParams{
+ EventID: participant.EventID,
+ ParticipantID: participant.ID,
+ }
+ if input.Address != nil && input.Address != &participant.Address.String {
+ values.Address = sql.NullString{
+ Valid: true,
+ String: *input.Address,
+ }
+ }
+ if input.Name != nil && input.Name != &participant.Name {
+ values.Name = sql.NullString{
+ Valid: true,
+ String: *input.Name,
+ }
+ }
+ if input.Participates != nil && input.Participates != &participant.Participates {
+ values.Participates = sql.NullBool{
+ Valid: true,
+ Bool: *input.Participates,
+ }
+ }
+ updated_participant, err := ctr.Querier.PatchParticipant(c.Context(), values)
+ if err != nil {
+ return utils.FailResponse(c, "could not update participant")
+ }
+ return utils.DataResponse(c, mappers.DbParticipantToParticipant(updated_participant, nil, nil))
+}
diff --git a/src/controllers/products_controller.go b/src/controllers/products_controller.go
new file mode 100644
index 00000000..f185a4db
--- /dev/null
+++ b/src/controllers/products_controller.go
@@ -0,0 +1,77 @@
+package controllers
+
+import (
+ "strconv"
+ "strings"
+
+ "github.com/giftxtrade/api/src/mappers"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+)
+
+// [GET] /products
+func (ctr Controller) FindAllProducts(c *fiber.Ctx) error {
+ search_query := c.Query("search")
+ filter := types.ProductFilter{
+ Search: &search_query,
+ Limit: int32(c.QueryInt("limit")),
+ Page: int32(c.QueryInt("page")),
+ MinPrice: float32(c.QueryFloat("minPrice")),
+ MaxPrice: float32(c.QueryFloat("maxPrice")),
+ }
+ if sort := c.Query("sort"); sort != "" {
+ value := ""
+ switch sort {
+ case "price":
+ value = "price"
+ case "rating":
+ value = "rating"
+ default:
+ return utils.FailResponse(c, "invalid value for param 'sort'")
+ }
+ filter.Sort = &value
+ }
+ if err := ctr.Validator.Struct(filter); err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+
+ products, err := ctr.Service.ProductService.Search(c.Context(), filter)
+ if err != nil {
+ errors := strings.Split(err.Error(), "\n")
+ return utils.FailResponse(c, errors...)
+ }
+ return utils.DataResponse(c, products)
+}
+
+// [POST] /products
+func (ctr Controller) CreateProduct(c *fiber.Ctx) error {
+ var create_product types.CreateProduct
+ if c.BodyParser(&create_product) != nil {
+ return utils.FailResponse(c, "could not parse body data")
+ }
+
+ product, created, err := ctr.Service.ProductService.UpdateOrCreate(c.Context(), create_product)
+ if err != nil {
+ return utils.FailResponse(c, "could not create/update product")
+ }
+ mapped_product := mappers.DbProductToProduct(product, nil)
+ if created {
+ return utils.DataResponseCreated(c, mapped_product)
+ }
+ return utils.DataResponse(c, mapped_product)
+}
+
+// [GET] /products/:id
+func (ctr Controller) FindProduct(c *fiber.Ctx) error {
+ id, err := strconv.Atoi(c.Params("id"))
+ if err != nil {
+ return utils.FailResponse(c, "invalid product id")
+ }
+
+ product, err := ctr.Querier.FindProductById(c.Context(), int64(id))
+ if err != nil {
+ return utils.FailResponse(c, "product not found")
+ }
+ return utils.DataResponse(c, mappers.DbProductToProduct(product, nil))
+}
diff --git a/src/controllers/wishes_controller.go b/src/controllers/wishes_controller.go
new file mode 100644
index 00000000..cd3f1fe0
--- /dev/null
+++ b/src/controllers/wishes_controller.go
@@ -0,0 +1,133 @@
+package controllers
+
+import (
+ "database/sql"
+
+ "github.com/giftxtrade/api/src/database"
+ "github.com/giftxtrade/api/src/mappers"
+ "github.com/giftxtrade/api/src/types"
+ "github.com/giftxtrade/api/src/utils"
+ "github.com/gofiber/fiber/v2"
+)
+
+func (ctr *Controller) CreateWish(c *fiber.Ctx) error {
+ input, err := utils.ParseAndValidateBody[types.CreateWish](ctr.Validator, c.Body())
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant, err := ctr.Querier.FindParticipantFromEventIdAndUser(c.Context(), database.FindParticipantFromEventIdAndUserParams{
+ EventID: event_id,
+ UserID: sql.NullInt64{
+ Int64: auth.User.ID,
+ Valid: true,
+ },
+ })
+ if err != nil {
+ return utils.FailResponse(c, "participant does not exist on the event")
+ }
+ create_wish_params := database.CreateWishParams{
+ UserID: auth.User.ID,
+ EventID: event_id,
+ ParticipantID: participant.ID,
+ }
+ var product *database.Product = nil
+ if input.ProductID != nil {
+ // check if product id is valid
+ product_id := *input.ProductID
+ p, err := ctr.Querier.FindProductById(c.Context(), product_id)
+ if err != nil {
+ return utils.FailResponse(c, "invalid product id")
+ }
+ product = &p
+ create_wish_params.ProductID = sql.NullInt64{
+ Int64: product_id,
+ Valid: true,
+ }
+
+ // check if wish with `product_id` already exists and update `quantity`
+ existing_wish, existing_wish_err := ctr.Querier.GetWishWithProductID(c.Context(), database.GetWishWithProductIDParams{
+ UserID: auth.User.ID,
+ EventID: event_id,
+ ParticipantID: participant.ID,
+ ProductID: sql.NullInt64{
+ Valid: true,
+ Int64: product_id,
+ },
+ })
+ if existing_wish_err == nil {
+ updated_wish, update_wish_err := ctr.Querier.UpdateWishQuantity(c.Context(), database.UpdateWishQuantityParams{
+ ID: existing_wish.ID,
+ Quantity: existing_wish.Quantity + 1,
+ })
+ if update_wish_err != nil {
+ return utils.FailResponse(c, "could not update wish quantity")
+ }
+ return utils.DataResponse(c, mappers.DbWishToWish(updated_wish, product))
+ }
+ }
+
+ wish, err := ctr.Querier.CreateWish(c.Context(), create_wish_params)
+ if err != nil {
+ return utils.FailResponse(c, "could not create wish")
+ }
+ return utils.DataResponseCreated(c, mappers.DbWishToWish(wish, product))
+}
+
+func (ctr *Controller) DeleteWish(c *fiber.Ctx) error {
+ input, err := utils.ParseAndValidateBody[types.DeleteWish](ctr.Validator, c.Body())
+ if err != nil {
+ return utils.FailResponse(c, err.Error())
+ }
+
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant, err := ctr.Querier.FindParticipantFromEventIdAndUser(c.Context(), database.FindParticipantFromEventIdAndUserParams{
+ EventID: event_id,
+ UserID: sql.NullInt64{
+ Int64: auth.User.ID,
+ Valid: true,
+ },
+ })
+ if err != nil {
+ return utils.FailResponse(c, "participant does not exist on the event")
+ }
+
+ wish, err := ctr.Querier.GetWishByAllIDs(c.Context(), database.GetWishByAllIDsParams{
+ ID: input.WishID,
+ UserID: auth.User.ID,
+ ParticipantID: participant.ID,
+ EventID: event_id,
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not find wish with the given inputs")
+ }
+
+ _, err = ctr.Querier.DeleteWish(c.Context(), wish.ID)
+ if err != nil {
+ return utils.FailResponse(c, "could not delete wish")
+ }
+ return utils.DataResponse(c, mappers.DbWishToWish(wish, nil))
+}
+
+func (ctr *Controller) GetWishes(c *fiber.Ctx) error {
+ auth := GetAuthContext(c.UserContext())
+ event_id := GetEventIdFromContext(c.UserContext())
+ participant := GetParticipantFromContext(c.UserContext())
+ wishes, err := ctr.Querier.GetAllWishesForUser(c.Context(), database.GetAllWishesForUserParams{
+ UserID: auth.User.ID,
+ EventID: event_id,
+ ParticipantID: participant.ID,
+ })
+ if err != nil {
+ return utils.FailResponse(c, "could not fetch wishes")
+ }
+
+ mapped_wishes := make([]types.Wish, len(wishes))
+ for i, w := range wishes {
+ mapped_wishes[i] = mappers.DbWishToWish(w.Wish, &w.Product)
+ }
+ return utils.DataResponse(c, mapped_wishes)
+}
diff --git a/src/database/category.sql.go b/src/database/category.sql.go
new file mode 100644
index 00000000..aafbd99a
--- /dev/null
+++ b/src/database/category.sql.go
@@ -0,0 +1,63 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: category.sql
+
+package database
+
+import (
+ "context"
+ "database/sql"
+)
+
+const createCategory = `-- name: CreateCategory :one
+INSERT INTO "category" (
+ "name",
+ "description",
+ "category_url"
+) VALUES(
+ $1,
+ $2,
+ $3
+)
+RETURNING id, name, description, category_url, created_at, updated_at
+`
+
+type CreateCategoryParams struct {
+ Name string `db:"name" json:"name"`
+ Description sql.NullString `db:"description" json:"description"`
+ CategoryUrl sql.NullString `db:"category_url" json:"categoryUrl"`
+}
+
+func (q *Queries) CreateCategory(ctx context.Context, arg CreateCategoryParams) (Category, error) {
+ row := q.queryRow(ctx, q.createCategoryStmt, createCategory, arg.Name, arg.Description, arg.CategoryUrl)
+ var i Category
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.CategoryUrl,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findCategoryByName = `-- name: FindCategoryByName :one
+SELECT id, name, description, category_url, created_at, updated_at FROM "category"
+WHERE "name" = $1
+`
+
+func (q *Queries) FindCategoryByName(ctx context.Context, name string) (Category, error) {
+ row := q.queryRow(ctx, q.findCategoryByNameStmt, findCategoryByName, name)
+ var i Category
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.CategoryUrl,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
diff --git a/src/database/db.go b/src/database/db.go
new file mode 100644
index 00000000..2dc1f71a
--- /dev/null
+++ b/src/database/db.go
@@ -0,0 +1,498 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+
+package database
+
+import (
+ "context"
+ "database/sql"
+ "fmt"
+)
+
+type DBTX interface {
+ ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
+ PrepareContext(context.Context, string) (*sql.Stmt, error)
+ QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
+ QueryRowContext(context.Context, string, ...interface{}) *sql.Row
+}
+
+func New(db DBTX) *Queries {
+ return &Queries{db: db}
+}
+
+func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
+ q := Queries{db: db}
+ var err error
+ if q.acceptEventInviteStmt, err = db.PrepareContext(ctx, acceptEventInvite); err != nil {
+ return nil, fmt.Errorf("error preparing query AcceptEventInvite: %w", err)
+ }
+ if q.createCategoryStmt, err = db.PrepareContext(ctx, createCategory); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateCategory: %w", err)
+ }
+ if q.createEventStmt, err = db.PrepareContext(ctx, createEvent); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateEvent: %w", err)
+ }
+ if q.createLinkStmt, err = db.PrepareContext(ctx, createLink); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateLink: %w", err)
+ }
+ if q.createParticipantStmt, err = db.PrepareContext(ctx, createParticipant); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateParticipant: %w", err)
+ }
+ if q.createProductStmt, err = db.PrepareContext(ctx, createProduct); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateProduct: %w", err)
+ }
+ if q.createUserStmt, err = db.PrepareContext(ctx, createUser); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateUser: %w", err)
+ }
+ if q.createWishStmt, err = db.PrepareContext(ctx, createWish); err != nil {
+ return nil, fmt.Errorf("error preparing query CreateWish: %w", err)
+ }
+ if q.declineEventInviteStmt, err = db.PrepareContext(ctx, declineEventInvite); err != nil {
+ return nil, fmt.Errorf("error preparing query DeclineEventInvite: %w", err)
+ }
+ if q.deleteEventStmt, err = db.PrepareContext(ctx, deleteEvent); err != nil {
+ return nil, fmt.Errorf("error preparing query DeleteEvent: %w", err)
+ }
+ if q.deleteParticipantByIdAndEventIdStmt, err = db.PrepareContext(ctx, deleteParticipantByIdAndEventId); err != nil {
+ return nil, fmt.Errorf("error preparing query DeleteParticipantByIdAndEventId: %w", err)
+ }
+ if q.deleteWishStmt, err = db.PrepareContext(ctx, deleteWish); err != nil {
+ return nil, fmt.Errorf("error preparing query DeleteWish: %w", err)
+ }
+ if q.filterProductsStmt, err = db.PrepareContext(ctx, filterProducts); err != nil {
+ return nil, fmt.Errorf("error preparing query FilterProducts: %w", err)
+ }
+ if q.findAllEventsWithUserStmt, err = db.PrepareContext(ctx, findAllEventsWithUser); err != nil {
+ return nil, fmt.Errorf("error preparing query FindAllEventsWithUser: %w", err)
+ }
+ if q.findCategoryByNameStmt, err = db.PrepareContext(ctx, findCategoryByName); err != nil {
+ return nil, fmt.Errorf("error preparing query FindCategoryByName: %w", err)
+ }
+ if q.findEventByIdStmt, err = db.PrepareContext(ctx, findEventById); err != nil {
+ return nil, fmt.Errorf("error preparing query FindEventById: %w", err)
+ }
+ if q.findEventInvitesStmt, err = db.PrepareContext(ctx, findEventInvites); err != nil {
+ return nil, fmt.Errorf("error preparing query FindEventInvites: %w", err)
+ }
+ if q.findEventSimpleStmt, err = db.PrepareContext(ctx, findEventSimple); err != nil {
+ return nil, fmt.Errorf("error preparing query FindEventSimple: %w", err)
+ }
+ if q.findLinkByCodeStmt, err = db.PrepareContext(ctx, findLinkByCode); err != nil {
+ return nil, fmt.Errorf("error preparing query FindLinkByCode: %w", err)
+ }
+ if q.findLinkWithEventByCodeStmt, err = db.PrepareContext(ctx, findLinkWithEventByCode); err != nil {
+ return nil, fmt.Errorf("error preparing query FindLinkWithEventByCode: %w", err)
+ }
+ if q.findParticipantFromEventIdAndUserStmt, err = db.PrepareContext(ctx, findParticipantFromEventIdAndUser); err != nil {
+ return nil, fmt.Errorf("error preparing query FindParticipantFromEventIdAndUser: %w", err)
+ }
+ if q.findParticipantUserWithFullEventByIdStmt, err = db.PrepareContext(ctx, findParticipantUserWithFullEventById); err != nil {
+ return nil, fmt.Errorf("error preparing query FindParticipantUserWithFullEventById: %w", err)
+ }
+ if q.findParticipantWithIdAndEventIdStmt, err = db.PrepareContext(ctx, findParticipantWithIdAndEventId); err != nil {
+ return nil, fmt.Errorf("error preparing query FindParticipantWithIdAndEventId: %w", err)
+ }
+ if q.findProductByIdStmt, err = db.PrepareContext(ctx, findProductById); err != nil {
+ return nil, fmt.Errorf("error preparing query FindProductById: %w", err)
+ }
+ if q.findProductByProductKeyStmt, err = db.PrepareContext(ctx, findProductByProductKey); err != nil {
+ return nil, fmt.Errorf("error preparing query FindProductByProductKey: %w", err)
+ }
+ if q.findUserByEmailStmt, err = db.PrepareContext(ctx, findUserByEmail); err != nil {
+ return nil, fmt.Errorf("error preparing query FindUserByEmail: %w", err)
+ }
+ if q.findUserByIdStmt, err = db.PrepareContext(ctx, findUserById); err != nil {
+ return nil, fmt.Errorf("error preparing query FindUserById: %w", err)
+ }
+ if q.findUserByIdAndEmailStmt, err = db.PrepareContext(ctx, findUserByIdAndEmail); err != nil {
+ return nil, fmt.Errorf("error preparing query FindUserByIdAndEmail: %w", err)
+ }
+ if q.findUserByIdOrEmailStmt, err = db.PrepareContext(ctx, findUserByIdOrEmail); err != nil {
+ return nil, fmt.Errorf("error preparing query FindUserByIdOrEmail: %w", err)
+ }
+ if q.getAllWishesForUserStmt, err = db.PrepareContext(ctx, getAllWishesForUser); err != nil {
+ return nil, fmt.Errorf("error preparing query GetAllWishesForUser: %w", err)
+ }
+ if q.getWishByAllIDsStmt, err = db.PrepareContext(ctx, getWishByAllIDs); err != nil {
+ return nil, fmt.Errorf("error preparing query GetWishByAllIDs: %w", err)
+ }
+ if q.getWishWithProductIDStmt, err = db.PrepareContext(ctx, getWishWithProductID); err != nil {
+ return nil, fmt.Errorf("error preparing query GetWishWithProductID: %w", err)
+ }
+ if q.patchParticipantStmt, err = db.PrepareContext(ctx, patchParticipant); err != nil {
+ return nil, fmt.Errorf("error preparing query PatchParticipant: %w", err)
+ }
+ if q.setUserAsAdminStmt, err = db.PrepareContext(ctx, setUserAsAdmin); err != nil {
+ return nil, fmt.Errorf("error preparing query SetUserAsAdmin: %w", err)
+ }
+ if q.updateEventStmt, err = db.PrepareContext(ctx, updateEvent); err != nil {
+ return nil, fmt.Errorf("error preparing query UpdateEvent: %w", err)
+ }
+ if q.updateParticipantStatusStmt, err = db.PrepareContext(ctx, updateParticipantStatus); err != nil {
+ return nil, fmt.Errorf("error preparing query UpdateParticipantStatus: %w", err)
+ }
+ if q.updateProductStmt, err = db.PrepareContext(ctx, updateProduct); err != nil {
+ return nil, fmt.Errorf("error preparing query UpdateProduct: %w", err)
+ }
+ if q.updateWishQuantityStmt, err = db.PrepareContext(ctx, updateWishQuantity); err != nil {
+ return nil, fmt.Errorf("error preparing query UpdateWishQuantity: %w", err)
+ }
+ if q.verifyEventForUserAsOrganizerStmt, err = db.PrepareContext(ctx, verifyEventForUserAsOrganizer); err != nil {
+ return nil, fmt.Errorf("error preparing query VerifyEventForUserAsOrganizer: %w", err)
+ }
+ if q.verifyEventForUserAsParticipantStmt, err = db.PrepareContext(ctx, verifyEventForUserAsParticipant); err != nil {
+ return nil, fmt.Errorf("error preparing query VerifyEventForUserAsParticipant: %w", err)
+ }
+ if q.verifyEventWithEmailOrUserStmt, err = db.PrepareContext(ctx, verifyEventWithEmailOrUser); err != nil {
+ return nil, fmt.Errorf("error preparing query VerifyEventWithEmailOrUser: %w", err)
+ }
+ if q.verifyEventWithParticipantIdStmt, err = db.PrepareContext(ctx, verifyEventWithParticipantId); err != nil {
+ return nil, fmt.Errorf("error preparing query VerifyEventWithParticipantId: %w", err)
+ }
+ return &q, nil
+}
+
+func (q *Queries) Close() error {
+ var err error
+ if q.acceptEventInviteStmt != nil {
+ if cerr := q.acceptEventInviteStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing acceptEventInviteStmt: %w", cerr)
+ }
+ }
+ if q.createCategoryStmt != nil {
+ if cerr := q.createCategoryStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createCategoryStmt: %w", cerr)
+ }
+ }
+ if q.createEventStmt != nil {
+ if cerr := q.createEventStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createEventStmt: %w", cerr)
+ }
+ }
+ if q.createLinkStmt != nil {
+ if cerr := q.createLinkStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createLinkStmt: %w", cerr)
+ }
+ }
+ if q.createParticipantStmt != nil {
+ if cerr := q.createParticipantStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createParticipantStmt: %w", cerr)
+ }
+ }
+ if q.createProductStmt != nil {
+ if cerr := q.createProductStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createProductStmt: %w", cerr)
+ }
+ }
+ if q.createUserStmt != nil {
+ if cerr := q.createUserStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createUserStmt: %w", cerr)
+ }
+ }
+ if q.createWishStmt != nil {
+ if cerr := q.createWishStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing createWishStmt: %w", cerr)
+ }
+ }
+ if q.declineEventInviteStmt != nil {
+ if cerr := q.declineEventInviteStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing declineEventInviteStmt: %w", cerr)
+ }
+ }
+ if q.deleteEventStmt != nil {
+ if cerr := q.deleteEventStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing deleteEventStmt: %w", cerr)
+ }
+ }
+ if q.deleteParticipantByIdAndEventIdStmt != nil {
+ if cerr := q.deleteParticipantByIdAndEventIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing deleteParticipantByIdAndEventIdStmt: %w", cerr)
+ }
+ }
+ if q.deleteWishStmt != nil {
+ if cerr := q.deleteWishStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing deleteWishStmt: %w", cerr)
+ }
+ }
+ if q.filterProductsStmt != nil {
+ if cerr := q.filterProductsStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing filterProductsStmt: %w", cerr)
+ }
+ }
+ if q.findAllEventsWithUserStmt != nil {
+ if cerr := q.findAllEventsWithUserStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findAllEventsWithUserStmt: %w", cerr)
+ }
+ }
+ if q.findCategoryByNameStmt != nil {
+ if cerr := q.findCategoryByNameStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findCategoryByNameStmt: %w", cerr)
+ }
+ }
+ if q.findEventByIdStmt != nil {
+ if cerr := q.findEventByIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findEventByIdStmt: %w", cerr)
+ }
+ }
+ if q.findEventInvitesStmt != nil {
+ if cerr := q.findEventInvitesStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findEventInvitesStmt: %w", cerr)
+ }
+ }
+ if q.findEventSimpleStmt != nil {
+ if cerr := q.findEventSimpleStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findEventSimpleStmt: %w", cerr)
+ }
+ }
+ if q.findLinkByCodeStmt != nil {
+ if cerr := q.findLinkByCodeStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findLinkByCodeStmt: %w", cerr)
+ }
+ }
+ if q.findLinkWithEventByCodeStmt != nil {
+ if cerr := q.findLinkWithEventByCodeStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findLinkWithEventByCodeStmt: %w", cerr)
+ }
+ }
+ if q.findParticipantFromEventIdAndUserStmt != nil {
+ if cerr := q.findParticipantFromEventIdAndUserStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findParticipantFromEventIdAndUserStmt: %w", cerr)
+ }
+ }
+ if q.findParticipantUserWithFullEventByIdStmt != nil {
+ if cerr := q.findParticipantUserWithFullEventByIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findParticipantUserWithFullEventByIdStmt: %w", cerr)
+ }
+ }
+ if q.findParticipantWithIdAndEventIdStmt != nil {
+ if cerr := q.findParticipantWithIdAndEventIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findParticipantWithIdAndEventIdStmt: %w", cerr)
+ }
+ }
+ if q.findProductByIdStmt != nil {
+ if cerr := q.findProductByIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findProductByIdStmt: %w", cerr)
+ }
+ }
+ if q.findProductByProductKeyStmt != nil {
+ if cerr := q.findProductByProductKeyStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findProductByProductKeyStmt: %w", cerr)
+ }
+ }
+ if q.findUserByEmailStmt != nil {
+ if cerr := q.findUserByEmailStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findUserByEmailStmt: %w", cerr)
+ }
+ }
+ if q.findUserByIdStmt != nil {
+ if cerr := q.findUserByIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findUserByIdStmt: %w", cerr)
+ }
+ }
+ if q.findUserByIdAndEmailStmt != nil {
+ if cerr := q.findUserByIdAndEmailStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findUserByIdAndEmailStmt: %w", cerr)
+ }
+ }
+ if q.findUserByIdOrEmailStmt != nil {
+ if cerr := q.findUserByIdOrEmailStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing findUserByIdOrEmailStmt: %w", cerr)
+ }
+ }
+ if q.getAllWishesForUserStmt != nil {
+ if cerr := q.getAllWishesForUserStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing getAllWishesForUserStmt: %w", cerr)
+ }
+ }
+ if q.getWishByAllIDsStmt != nil {
+ if cerr := q.getWishByAllIDsStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing getWishByAllIDsStmt: %w", cerr)
+ }
+ }
+ if q.getWishWithProductIDStmt != nil {
+ if cerr := q.getWishWithProductIDStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing getWishWithProductIDStmt: %w", cerr)
+ }
+ }
+ if q.patchParticipantStmt != nil {
+ if cerr := q.patchParticipantStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing patchParticipantStmt: %w", cerr)
+ }
+ }
+ if q.setUserAsAdminStmt != nil {
+ if cerr := q.setUserAsAdminStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing setUserAsAdminStmt: %w", cerr)
+ }
+ }
+ if q.updateEventStmt != nil {
+ if cerr := q.updateEventStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing updateEventStmt: %w", cerr)
+ }
+ }
+ if q.updateParticipantStatusStmt != nil {
+ if cerr := q.updateParticipantStatusStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing updateParticipantStatusStmt: %w", cerr)
+ }
+ }
+ if q.updateProductStmt != nil {
+ if cerr := q.updateProductStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing updateProductStmt: %w", cerr)
+ }
+ }
+ if q.updateWishQuantityStmt != nil {
+ if cerr := q.updateWishQuantityStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing updateWishQuantityStmt: %w", cerr)
+ }
+ }
+ if q.verifyEventForUserAsOrganizerStmt != nil {
+ if cerr := q.verifyEventForUserAsOrganizerStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing verifyEventForUserAsOrganizerStmt: %w", cerr)
+ }
+ }
+ if q.verifyEventForUserAsParticipantStmt != nil {
+ if cerr := q.verifyEventForUserAsParticipantStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing verifyEventForUserAsParticipantStmt: %w", cerr)
+ }
+ }
+ if q.verifyEventWithEmailOrUserStmt != nil {
+ if cerr := q.verifyEventWithEmailOrUserStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing verifyEventWithEmailOrUserStmt: %w", cerr)
+ }
+ }
+ if q.verifyEventWithParticipantIdStmt != nil {
+ if cerr := q.verifyEventWithParticipantIdStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing verifyEventWithParticipantIdStmt: %w", cerr)
+ }
+ }
+ return err
+}
+
+func (q *Queries) exec(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) (sql.Result, error) {
+ switch {
+ case stmt != nil && q.tx != nil:
+ return q.tx.StmtContext(ctx, stmt).ExecContext(ctx, args...)
+ case stmt != nil:
+ return stmt.ExecContext(ctx, args...)
+ default:
+ return q.db.ExecContext(ctx, query, args...)
+ }
+}
+
+func (q *Queries) query(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) (*sql.Rows, error) {
+ switch {
+ case stmt != nil && q.tx != nil:
+ return q.tx.StmtContext(ctx, stmt).QueryContext(ctx, args...)
+ case stmt != nil:
+ return stmt.QueryContext(ctx, args...)
+ default:
+ return q.db.QueryContext(ctx, query, args...)
+ }
+}
+
+func (q *Queries) queryRow(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) *sql.Row {
+ switch {
+ case stmt != nil && q.tx != nil:
+ return q.tx.StmtContext(ctx, stmt).QueryRowContext(ctx, args...)
+ case stmt != nil:
+ return stmt.QueryRowContext(ctx, args...)
+ default:
+ return q.db.QueryRowContext(ctx, query, args...)
+ }
+}
+
+type Queries struct {
+ db DBTX
+ tx *sql.Tx
+ acceptEventInviteStmt *sql.Stmt
+ createCategoryStmt *sql.Stmt
+ createEventStmt *sql.Stmt
+ createLinkStmt *sql.Stmt
+ createParticipantStmt *sql.Stmt
+ createProductStmt *sql.Stmt
+ createUserStmt *sql.Stmt
+ createWishStmt *sql.Stmt
+ declineEventInviteStmt *sql.Stmt
+ deleteEventStmt *sql.Stmt
+ deleteParticipantByIdAndEventIdStmt *sql.Stmt
+ deleteWishStmt *sql.Stmt
+ filterProductsStmt *sql.Stmt
+ findAllEventsWithUserStmt *sql.Stmt
+ findCategoryByNameStmt *sql.Stmt
+ findEventByIdStmt *sql.Stmt
+ findEventInvitesStmt *sql.Stmt
+ findEventSimpleStmt *sql.Stmt
+ findLinkByCodeStmt *sql.Stmt
+ findLinkWithEventByCodeStmt *sql.Stmt
+ findParticipantFromEventIdAndUserStmt *sql.Stmt
+ findParticipantUserWithFullEventByIdStmt *sql.Stmt
+ findParticipantWithIdAndEventIdStmt *sql.Stmt
+ findProductByIdStmt *sql.Stmt
+ findProductByProductKeyStmt *sql.Stmt
+ findUserByEmailStmt *sql.Stmt
+ findUserByIdStmt *sql.Stmt
+ findUserByIdAndEmailStmt *sql.Stmt
+ findUserByIdOrEmailStmt *sql.Stmt
+ getAllWishesForUserStmt *sql.Stmt
+ getWishByAllIDsStmt *sql.Stmt
+ getWishWithProductIDStmt *sql.Stmt
+ patchParticipantStmt *sql.Stmt
+ setUserAsAdminStmt *sql.Stmt
+ updateEventStmt *sql.Stmt
+ updateParticipantStatusStmt *sql.Stmt
+ updateProductStmt *sql.Stmt
+ updateWishQuantityStmt *sql.Stmt
+ verifyEventForUserAsOrganizerStmt *sql.Stmt
+ verifyEventForUserAsParticipantStmt *sql.Stmt
+ verifyEventWithEmailOrUserStmt *sql.Stmt
+ verifyEventWithParticipantIdStmt *sql.Stmt
+}
+
+func (q *Queries) WithTx(tx *sql.Tx) *Queries {
+ return &Queries{
+ db: tx,
+ tx: tx,
+ acceptEventInviteStmt: q.acceptEventInviteStmt,
+ createCategoryStmt: q.createCategoryStmt,
+ createEventStmt: q.createEventStmt,
+ createLinkStmt: q.createLinkStmt,
+ createParticipantStmt: q.createParticipantStmt,
+ createProductStmt: q.createProductStmt,
+ createUserStmt: q.createUserStmt,
+ createWishStmt: q.createWishStmt,
+ declineEventInviteStmt: q.declineEventInviteStmt,
+ deleteEventStmt: q.deleteEventStmt,
+ deleteParticipantByIdAndEventIdStmt: q.deleteParticipantByIdAndEventIdStmt,
+ deleteWishStmt: q.deleteWishStmt,
+ filterProductsStmt: q.filterProductsStmt,
+ findAllEventsWithUserStmt: q.findAllEventsWithUserStmt,
+ findCategoryByNameStmt: q.findCategoryByNameStmt,
+ findEventByIdStmt: q.findEventByIdStmt,
+ findEventInvitesStmt: q.findEventInvitesStmt,
+ findEventSimpleStmt: q.findEventSimpleStmt,
+ findLinkByCodeStmt: q.findLinkByCodeStmt,
+ findLinkWithEventByCodeStmt: q.findLinkWithEventByCodeStmt,
+ findParticipantFromEventIdAndUserStmt: q.findParticipantFromEventIdAndUserStmt,
+ findParticipantUserWithFullEventByIdStmt: q.findParticipantUserWithFullEventByIdStmt,
+ findParticipantWithIdAndEventIdStmt: q.findParticipantWithIdAndEventIdStmt,
+ findProductByIdStmt: q.findProductByIdStmt,
+ findProductByProductKeyStmt: q.findProductByProductKeyStmt,
+ findUserByEmailStmt: q.findUserByEmailStmt,
+ findUserByIdStmt: q.findUserByIdStmt,
+ findUserByIdAndEmailStmt: q.findUserByIdAndEmailStmt,
+ findUserByIdOrEmailStmt: q.findUserByIdOrEmailStmt,
+ getAllWishesForUserStmt: q.getAllWishesForUserStmt,
+ getWishByAllIDsStmt: q.getWishByAllIDsStmt,
+ getWishWithProductIDStmt: q.getWishWithProductIDStmt,
+ patchParticipantStmt: q.patchParticipantStmt,
+ setUserAsAdminStmt: q.setUserAsAdminStmt,
+ updateEventStmt: q.updateEventStmt,
+ updateParticipantStatusStmt: q.updateParticipantStatusStmt,
+ updateProductStmt: q.updateProductStmt,
+ updateWishQuantityStmt: q.updateWishQuantityStmt,
+ verifyEventForUserAsOrganizerStmt: q.verifyEventForUserAsOrganizerStmt,
+ verifyEventForUserAsParticipantStmt: q.verifyEventForUserAsParticipantStmt,
+ verifyEventWithEmailOrUserStmt: q.verifyEventWithEmailOrUserStmt,
+ verifyEventWithParticipantIdStmt: q.verifyEventWithParticipantIdStmt,
+ }
+}
diff --git a/src/database/db_config.go b/src/database/db_config.go
new file mode 100644
index 00000000..e4f53972
--- /dev/null
+++ b/src/database/db_config.go
@@ -0,0 +1,53 @@
+package database
+
+import (
+ "database/sql"
+ "fmt"
+ "strconv"
+
+ "github.com/giftxtrade/api/src/utils"
+)
+
+type DbConnection struct {
+ DbName string `json:"dbName"`
+ Username string `json:"username"`
+ Password string `json:"password"`
+ Host string `json:"host"`
+ Port uint16 `json:"port"`
+ SslMode bool `json:"sslMode"`
+}
+
+func DbConnectionString(options DbConnection) string {
+ sslmode_val := "enable"
+ if !options.SslMode {
+ sslmode_val = "disable"
+ }
+ dns := fmt.Sprintf(
+ "host=%s user=%s password=%s dbname=%s port=%s sslmode=%s TimeZone=America/Chicago",
+ options.Host,
+ options.Username,
+ options.Password,
+ options.DbName,
+ strconv.Itoa(int(options.Port)),
+ sslmode_val,
+ )
+ return dns
+}
+
+func DbConfig() (DbConnection, error) {
+ var db_config DbConnection
+ err := utils.FileMapper("db_config.json", &db_config)
+ return db_config, err
+}
+
+func CreateDbConnection(options DbConnection) (*sql.DB, error) {
+ return sql.Open("postgres", DbConnectionString(options))
+}
+
+func NewDbConnection() (*sql.DB, error) {
+ config, err := DbConfig()
+ if err != nil {
+ return nil, err
+ }
+ return CreateDbConnection(config)
+}
diff --git a/src/database/event.sql.go b/src/database/event.sql.go
new file mode 100644
index 00000000..0cc37bf9
--- /dev/null
+++ b/src/database/event.sql.go
@@ -0,0 +1,426 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: event.sql
+
+package database
+
+import (
+ "context"
+ "database/sql"
+ "time"
+)
+
+const createEvent = `-- name: CreateEvent :one
+INSERT INTO "event" (
+ "name",
+ "description",
+ "budget",
+ "invitation_message",
+ "draw_at",
+ "close_at"
+) VALUES (
+ $1, $2, $3, $4, $5, $6
+)
+RETURNING id, name, description, budget, invitation_message, draw_at, close_at, created_at, updated_at
+`
+
+type CreateEventParams struct {
+ Name string `db:"name" json:"name"`
+ Description sql.NullString `db:"description" json:"description"`
+ Budget string `db:"budget" json:"budget"`
+ InvitationMessage string `db:"invitation_message" json:"invitationMessage"`
+ DrawAt time.Time `db:"draw_at" json:"drawAt"`
+ CloseAt time.Time `db:"close_at" json:"closeAt"`
+}
+
+func (q *Queries) CreateEvent(ctx context.Context, arg CreateEventParams) (Event, error) {
+ row := q.queryRow(ctx, q.createEventStmt, createEvent,
+ arg.Name,
+ arg.Description,
+ arg.Budget,
+ arg.InvitationMessage,
+ arg.DrawAt,
+ arg.CloseAt,
+ )
+ var i Event
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.Budget,
+ &i.InvitationMessage,
+ &i.DrawAt,
+ &i.CloseAt,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const deleteEvent = `-- name: DeleteEvent :one
+DELETE FROM "event"
+WHERE "event"."id" = $1
+RETURNING id, name, description, budget, invitation_message, draw_at, close_at, created_at, updated_at
+`
+
+func (q *Queries) DeleteEvent(ctx context.Context, id int64) (Event, error) {
+ row := q.queryRow(ctx, q.deleteEventStmt, deleteEvent, id)
+ var i Event
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.Budget,
+ &i.InvitationMessage,
+ &i.DrawAt,
+ &i.CloseAt,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findAllEventsWithUser = `-- name: FindAllEventsWithUser :many
+SELECT
+ event.id, event.name, event.description, event.budget, event.invitation_message, event.draw_at, event.close_at, event.created_at, event.updated_at,
+ p.id, p.name, p.email, p.address, p.organizer, p.participates, p.accepted, p.event_id, p.user_id, p.created_at, p.updated_at, p.user_name, p.user_email, p.user_image_url
+FROM "event"
+JOIN "participant" "p1" ON "p1"."event_id" = "event"."id"
+JOIN "participant_user" "p" ON "p"."event_id" = "event"."id"
+WHERE
+ "p1"."user_id" = $1
+ORDER BY
+ "event"."draw_at" ASC,
+ "event"."close_at" ASC,
+ "p"."id" ASC
+`
+
+type FindAllEventsWithUserRow struct {
+ Event Event `db:"event" json:"event"`
+ ParticipantUser ParticipantUser `db:"participant_user" json:"participantUser"`
+}
+
+func (q *Queries) FindAllEventsWithUser(ctx context.Context, userID sql.NullInt64) ([]FindAllEventsWithUserRow, error) {
+ rows, err := q.query(ctx, q.findAllEventsWithUserStmt, findAllEventsWithUser, userID)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []FindAllEventsWithUserRow
+ for rows.Next() {
+ var i FindAllEventsWithUserRow
+ if err := rows.Scan(
+ &i.Event.ID,
+ &i.Event.Name,
+ &i.Event.Description,
+ &i.Event.Budget,
+ &i.Event.InvitationMessage,
+ &i.Event.DrawAt,
+ &i.Event.CloseAt,
+ &i.Event.CreatedAt,
+ &i.Event.UpdatedAt,
+ &i.ParticipantUser.ID,
+ &i.ParticipantUser.Name,
+ &i.ParticipantUser.Email,
+ &i.ParticipantUser.Address,
+ &i.ParticipantUser.Organizer,
+ &i.ParticipantUser.Participates,
+ &i.ParticipantUser.Accepted,
+ &i.ParticipantUser.EventID,
+ &i.ParticipantUser.UserID,
+ &i.ParticipantUser.CreatedAt,
+ &i.ParticipantUser.UpdatedAt,
+ &i.ParticipantUser.UserName,
+ &i.ParticipantUser.UserEmail,
+ &i.ParticipantUser.UserImageUrl,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
+const findEventById = `-- name: FindEventById :many
+SELECT
+ event_link.id, event_link.name, event_link.description, event_link.budget, event_link.invitation_message, event_link.draw_at, event_link.close_at, event_link.created_at, event_link.updated_at, event_link.link_id, event_link.link_code, event_link.link_expiration_date,
+ p.id, p.name, p.email, p.address, p.organizer, p.participates, p.accepted, p.event_id, p.user_id, p.created_at, p.updated_at, p.user_name, p.user_email, p.user_image_url
+FROM "event_link"
+JOIN "participant_user" "p" ON "p"."event_id" = "event_link"."id"
+WHERE "event_link"."id" = $1
+ORDER BY
+ "p"."organizer" DESC,
+ "p"."accepted" DESC,
+ "p"."created_at" DESC
+`
+
+type FindEventByIdRow struct {
+ EventLink EventLink `db:"event_link" json:"eventLink"`
+ ParticipantUser ParticipantUser `db:"participant_user" json:"participantUser"`
+}
+
+func (q *Queries) FindEventById(ctx context.Context, id int64) ([]FindEventByIdRow, error) {
+ rows, err := q.query(ctx, q.findEventByIdStmt, findEventById, id)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []FindEventByIdRow
+ for rows.Next() {
+ var i FindEventByIdRow
+ if err := rows.Scan(
+ &i.EventLink.ID,
+ &i.EventLink.Name,
+ &i.EventLink.Description,
+ &i.EventLink.Budget,
+ &i.EventLink.InvitationMessage,
+ &i.EventLink.DrawAt,
+ &i.EventLink.CloseAt,
+ &i.EventLink.CreatedAt,
+ &i.EventLink.UpdatedAt,
+ &i.EventLink.LinkID,
+ &i.EventLink.LinkCode,
+ &i.EventLink.LinkExpirationDate,
+ &i.ParticipantUser.ID,
+ &i.ParticipantUser.Name,
+ &i.ParticipantUser.Email,
+ &i.ParticipantUser.Address,
+ &i.ParticipantUser.Organizer,
+ &i.ParticipantUser.Participates,
+ &i.ParticipantUser.Accepted,
+ &i.ParticipantUser.EventID,
+ &i.ParticipantUser.UserID,
+ &i.ParticipantUser.CreatedAt,
+ &i.ParticipantUser.UpdatedAt,
+ &i.ParticipantUser.UserName,
+ &i.ParticipantUser.UserEmail,
+ &i.ParticipantUser.UserImageUrl,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
+const findEventInvites = `-- name: FindEventInvites :many
+SELECT event.id, event.name, event.description, event.budget, event.invitation_message, event.draw_at, event.close_at, event.created_at, event.updated_at
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+WHERE
+ "participant"."accepted" = FALSE
+ AND
+ "participant"."email" = $1
+`
+
+func (q *Queries) FindEventInvites(ctx context.Context, email string) ([]Event, error) {
+ rows, err := q.query(ctx, q.findEventInvitesStmt, findEventInvites, email)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []Event
+ for rows.Next() {
+ var i Event
+ if err := rows.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.Budget,
+ &i.InvitationMessage,
+ &i.DrawAt,
+ &i.CloseAt,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
+const findEventSimple = `-- name: FindEventSimple :one
+SELECT id, name, description, budget, invitation_message, draw_at, close_at, created_at, updated_at FROM "event" WHERE "event"."id" = $1
+`
+
+func (q *Queries) FindEventSimple(ctx context.Context, id int64) (Event, error) {
+ row := q.queryRow(ctx, q.findEventSimpleStmt, findEventSimple, id)
+ var i Event
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.Budget,
+ &i.InvitationMessage,
+ &i.DrawAt,
+ &i.CloseAt,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const updateEvent = `-- name: UpdateEvent :one
+UPDATE "event"
+SET
+ "name" = COALESCE($2, "name"),
+ "description" = COALESCE($3, "description"),
+ "budget" = COALESCE($4, "budget"),
+ "draw_at" = COALESCE($5, "draw_at"),
+ "close_at" = COALESCE($6, "close_at"),
+ "updated_at" = now()
+WHERE "event"."id" = $1
+RETURNING id, name, description, budget, invitation_message, draw_at, close_at, created_at, updated_at
+`
+
+type UpdateEventParams struct {
+ ID int64 `db:"id" json:"id"`
+ Name sql.NullString `db:"name" json:"name"`
+ Description sql.NullString `db:"description" json:"description"`
+ Budget sql.NullString `db:"budget" json:"budget"`
+ DrawAt sql.NullTime `db:"draw_at" json:"drawAt"`
+ CloseAt sql.NullTime `db:"close_at" json:"closeAt"`
+}
+
+func (q *Queries) UpdateEvent(ctx context.Context, arg UpdateEventParams) (Event, error) {
+ row := q.queryRow(ctx, q.updateEventStmt, updateEvent,
+ arg.ID,
+ arg.Name,
+ arg.Description,
+ arg.Budget,
+ arg.DrawAt,
+ arg.CloseAt,
+ )
+ var i Event
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Description,
+ &i.Budget,
+ &i.InvitationMessage,
+ &i.DrawAt,
+ &i.CloseAt,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const verifyEventForUserAsOrganizer = `-- name: VerifyEventForUserAsOrganizer :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+JOIN "user" ON "user"."id" = "participant"."user_id"
+WHERE
+ "event"."id" = $1
+ AND
+ "participant"."organizer" = TRUE
+ AND
+ "user"."id" = $2
+`
+
+type VerifyEventForUserAsOrganizerParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ UserID int64 `db:"user_id" json:"userId"`
+}
+
+func (q *Queries) VerifyEventForUserAsOrganizer(ctx context.Context, arg VerifyEventForUserAsOrganizerParams) (int64, error) {
+ row := q.queryRow(ctx, q.verifyEventForUserAsOrganizerStmt, verifyEventForUserAsOrganizer, arg.EventID, arg.UserID)
+ var id int64
+ err := row.Scan(&id)
+ return id, err
+}
+
+const verifyEventForUserAsParticipant = `-- name: VerifyEventForUserAsParticipant :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+JOIN "user" ON "user"."id" = "participant"."user_id"
+WHERE
+ "event"."id" = $1
+ AND
+ "participant"."participates" = TRUE
+ AND
+ "user"."id" = $2
+`
+
+type VerifyEventForUserAsParticipantParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ UserID int64 `db:"user_id" json:"userId"`
+}
+
+func (q *Queries) VerifyEventForUserAsParticipant(ctx context.Context, arg VerifyEventForUserAsParticipantParams) (int64, error) {
+ row := q.queryRow(ctx, q.verifyEventForUserAsParticipantStmt, verifyEventForUserAsParticipant, arg.EventID, arg.UserID)
+ var id int64
+ err := row.Scan(&id)
+ return id, err
+}
+
+const verifyEventWithEmailOrUser = `-- name: VerifyEventWithEmailOrUser :one
+
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+WHERE
+ "event"."id" = $1
+ AND
+ (
+ "participant"."user_id" = $2 OR "participant"."email" = $3
+ )
+`
+
+type VerifyEventWithEmailOrUserParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ UserID sql.NullInt64 `db:"user_id" json:"userId"`
+ Email sql.NullString `db:"email" json:"email"`
+}
+
+// event verification queries
+func (q *Queries) VerifyEventWithEmailOrUser(ctx context.Context, arg VerifyEventWithEmailOrUserParams) (int64, error) {
+ row := q.queryRow(ctx, q.verifyEventWithEmailOrUserStmt, verifyEventWithEmailOrUser, arg.EventID, arg.UserID, arg.Email)
+ var id int64
+ err := row.Scan(&id)
+ return id, err
+}
+
+const verifyEventWithParticipantId = `-- name: VerifyEventWithParticipantId :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+WHERE
+ "event"."id" = $1
+ AND
+ "participant"."id" = $2
+`
+
+type VerifyEventWithParticipantIdParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+}
+
+func (q *Queries) VerifyEventWithParticipantId(ctx context.Context, arg VerifyEventWithParticipantIdParams) (int64, error) {
+ row := q.queryRow(ctx, q.verifyEventWithParticipantIdStmt, verifyEventWithParticipantId, arg.EventID, arg.ParticipantID)
+ var id int64
+ err := row.Scan(&id)
+ return id, err
+}
diff --git a/src/database/jet/postgres/public/enum/currency_type.go b/src/database/jet/postgres/public/enum/currency_type.go
new file mode 100644
index 00000000..447cd669
--- /dev/null
+++ b/src/database/jet/postgres/public/enum/currency_type.go
@@ -0,0 +1,18 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package enum
+
+import "github.com/go-jet/jet/v2/postgres"
+
+var CurrencyType = &struct {
+ Usd postgres.StringExpression
+ Cad postgres.StringExpression
+}{
+ Usd: postgres.NewEnumValue("USD"),
+ Cad: postgres.NewEnumValue("CAD"),
+}
diff --git a/src/database/jet/postgres/public/model/category.go b/src/database/jet/postgres/public/model/category.go
new file mode 100644
index 00000000..4a2b52b3
--- /dev/null
+++ b/src/database/jet/postgres/public/model/category.go
@@ -0,0 +1,21 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Category struct {
+ ID int64 `sql:"primary_key"`
+ Name string
+ Description *string
+ CategoryURL *string
+ CreatedAt time.Time
+ UpdatedAt time.Time
+}
diff --git a/src/database/jet/postgres/public/model/currency_type.go b/src/database/jet/postgres/public/model/currency_type.go
new file mode 100644
index 00000000..8e8bbb44
--- /dev/null
+++ b/src/database/jet/postgres/public/model/currency_type.go
@@ -0,0 +1,44 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import "errors"
+
+type CurrencyType string
+
+const (
+ CurrencyType_Usd CurrencyType = "USD"
+ CurrencyType_Cad CurrencyType = "CAD"
+)
+
+func (e *CurrencyType) Scan(value interface{}) error {
+ var enumValue string
+ switch val := value.(type) {
+ case string:
+ enumValue = val
+ case []byte:
+ enumValue = string(val)
+ default:
+ return errors.New("jet: Invalid scan value for AllTypesEnum enum. Enum value has to be of type string or []byte")
+ }
+
+ switch enumValue {
+ case "USD":
+ *e = CurrencyType_Usd
+ case "CAD":
+ *e = CurrencyType_Cad
+ default:
+ return errors.New("jet: Invalid scan value '" + enumValue + "' for CurrencyType enum")
+ }
+
+ return nil
+}
+
+func (e CurrencyType) String() string {
+ return string(e)
+}
diff --git a/src/database/jet/postgres/public/model/draw.go b/src/database/jet/postgres/public/model/draw.go
new file mode 100644
index 00000000..bccc7a30
--- /dev/null
+++ b/src/database/jet/postgres/public/model/draw.go
@@ -0,0 +1,21 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Draw struct {
+ ID int64 `sql:"primary_key"`
+ DrawerID int64
+ DraweeID int64
+ EventID int64
+ CreatedAt time.Time
+ UpdatedAt time.Time
+}
diff --git a/src/database/jet/postgres/public/model/event.go b/src/database/jet/postgres/public/model/event.go
new file mode 100644
index 00000000..c7cf69a6
--- /dev/null
+++ b/src/database/jet/postgres/public/model/event.go
@@ -0,0 +1,24 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Event struct {
+ ID int64 `sql:"primary_key"`
+ Name string
+ Description *string
+ Budget string
+ InvitationMessage string
+ DrawAt time.Time
+ CloseAt time.Time
+ CreatedAt time.Time
+ UpdatedAt time.Time
+}
diff --git a/src/database/jet/postgres/public/model/event_link.go b/src/database/jet/postgres/public/model/event_link.go
new file mode 100644
index 00000000..516dd8df
--- /dev/null
+++ b/src/database/jet/postgres/public/model/event_link.go
@@ -0,0 +1,27 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type EventLink struct {
+ ID *int64
+ Name *string
+ Description *string
+ Budget *string
+ InvitationMessage *string
+ DrawAt *time.Time
+ CloseAt *time.Time
+ CreatedAt *time.Time
+ UpdatedAt *time.Time
+ LinkID *int64
+ LinkCode *string
+ LinkExpirationDate *time.Time
+}
diff --git a/src/database/jet/postgres/public/model/link.go b/src/database/jet/postgres/public/model/link.go
new file mode 100644
index 00000000..97e37d15
--- /dev/null
+++ b/src/database/jet/postgres/public/model/link.go
@@ -0,0 +1,21 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Link struct {
+ ID int64 `sql:"primary_key"`
+ Code string
+ ExpirationDate time.Time
+ EventID int64
+ CreatedAt time.Time
+ UpdatedAt time.Time
+}
diff --git a/src/database/jet/postgres/public/model/migration.go b/src/database/jet/postgres/public/model/migration.go
new file mode 100644
index 00000000..e24cc921
--- /dev/null
+++ b/src/database/jet/postgres/public/model/migration.go
@@ -0,0 +1,18 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Migration struct {
+ ID int64
+ Name string
+ MigrationDate time.Time
+}
diff --git a/src/database/jet/postgres/public/model/participant.go b/src/database/jet/postgres/public/model/participant.go
new file mode 100644
index 00000000..1e3ccc34
--- /dev/null
+++ b/src/database/jet/postgres/public/model/participant.go
@@ -0,0 +1,26 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Participant struct {
+ ID int64 `sql:"primary_key"`
+ Name string
+ Email string
+ Address *string
+ Organizer bool
+ Participates bool
+ Accepted bool
+ EventID int64
+ UserID *int64
+ CreatedAt time.Time
+ UpdatedAt time.Time
+}
diff --git a/src/database/jet/postgres/public/model/participant_user.go b/src/database/jet/postgres/public/model/participant_user.go
new file mode 100644
index 00000000..cd3e20ee
--- /dev/null
+++ b/src/database/jet/postgres/public/model/participant_user.go
@@ -0,0 +1,29 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type ParticipantUser struct {
+ ID *int64
+ Name *string
+ Email *string
+ Address *string
+ Organizer *bool
+ Participates *bool
+ Accepted *bool
+ EventID *int64
+ UserID *int64
+ CreatedAt *time.Time
+ UpdatedAt *time.Time
+ UserName *string
+ UserEmail *string
+ UserImageURL *string
+}
diff --git a/src/database/jet/postgres/public/model/product.go b/src/database/jet/postgres/public/model/product.go
new file mode 100644
index 00000000..df23607a
--- /dev/null
+++ b/src/database/jet/postgres/public/model/product.go
@@ -0,0 +1,30 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Product struct {
+ ID int64 `sql:"primary_key"`
+ Title string
+ Description *string
+ ProductKey string
+ ImageURL string
+ TotalReviews int32
+ Rating float32
+ Price string
+ Currency CurrencyType
+ URL string
+ CategoryID *int64
+ CreatedAt time.Time
+ UpdatedAt time.Time
+ ProductTs *string
+ Origin string
+}
diff --git a/src/database/jet/postgres/public/model/user.go b/src/database/jet/postgres/public/model/user.go
new file mode 100644
index 00000000..b8c290d8
--- /dev/null
+++ b/src/database/jet/postgres/public/model/user.go
@@ -0,0 +1,24 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type User struct {
+ ID int64 `sql:"primary_key"`
+ Name string
+ Email string
+ ImageURL string
+ Phone *string
+ Admin bool
+ Active bool
+ CreatedAt time.Time
+ UpdatedAt time.Time
+}
diff --git a/src/database/jet/postgres/public/model/wish.go b/src/database/jet/postgres/public/model/wish.go
new file mode 100644
index 00000000..f336b48a
--- /dev/null
+++ b/src/database/jet/postgres/public/model/wish.go
@@ -0,0 +1,23 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package model
+
+import (
+ "time"
+)
+
+type Wish struct {
+ ID int64 `sql:"primary_key"`
+ UserID int64
+ ParticipantID int64
+ ProductID *int64
+ EventID int64
+ CreatedAt time.Time
+ UpdatedAt time.Time
+ Quantity int32
+}
diff --git a/src/database/jet/postgres/public/table/category.go b/src/database/jet/postgres/public/table/category.go
new file mode 100644
index 00000000..17a5a666
--- /dev/null
+++ b/src/database/jet/postgres/public/table/category.go
@@ -0,0 +1,90 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Category = newCategoryTable("public", "category", "")
+
+type categoryTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ Description postgres.ColumnString
+ CategoryURL postgres.ColumnString
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type CategoryTable struct {
+ categoryTable
+
+ EXCLUDED categoryTable
+}
+
+// AS creates new CategoryTable with assigned alias
+func (a CategoryTable) AS(alias string) *CategoryTable {
+ return newCategoryTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new CategoryTable with assigned schema name
+func (a CategoryTable) FromSchema(schemaName string) *CategoryTable {
+ return newCategoryTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new CategoryTable with assigned table prefix
+func (a CategoryTable) WithPrefix(prefix string) *CategoryTable {
+ return newCategoryTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new CategoryTable with assigned table suffix
+func (a CategoryTable) WithSuffix(suffix string) *CategoryTable {
+ return newCategoryTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newCategoryTable(schemaName, tableName, alias string) *CategoryTable {
+ return &CategoryTable{
+ categoryTable: newCategoryTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newCategoryTableImpl("", "excluded", ""),
+ }
+}
+
+func newCategoryTableImpl(schemaName, tableName, alias string) categoryTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ DescriptionColumn = postgres.StringColumn("description")
+ CategoryURLColumn = postgres.StringColumn("category_url")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, DescriptionColumn, CategoryURLColumn, CreatedAtColumn, UpdatedAtColumn}
+ mutableColumns = postgres.ColumnList{NameColumn, DescriptionColumn, CategoryURLColumn, CreatedAtColumn, UpdatedAtColumn}
+ )
+
+ return categoryTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ Description: DescriptionColumn,
+ CategoryURL: CategoryURLColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/draw.go b/src/database/jet/postgres/public/table/draw.go
new file mode 100644
index 00000000..d9fdf6ea
--- /dev/null
+++ b/src/database/jet/postgres/public/table/draw.go
@@ -0,0 +1,90 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Draw = newDrawTable("public", "draw", "")
+
+type drawTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ DrawerID postgres.ColumnInteger
+ DraweeID postgres.ColumnInteger
+ EventID postgres.ColumnInteger
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type DrawTable struct {
+ drawTable
+
+ EXCLUDED drawTable
+}
+
+// AS creates new DrawTable with assigned alias
+func (a DrawTable) AS(alias string) *DrawTable {
+ return newDrawTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new DrawTable with assigned schema name
+func (a DrawTable) FromSchema(schemaName string) *DrawTable {
+ return newDrawTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new DrawTable with assigned table prefix
+func (a DrawTable) WithPrefix(prefix string) *DrawTable {
+ return newDrawTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new DrawTable with assigned table suffix
+func (a DrawTable) WithSuffix(suffix string) *DrawTable {
+ return newDrawTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newDrawTable(schemaName, tableName, alias string) *DrawTable {
+ return &DrawTable{
+ drawTable: newDrawTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newDrawTableImpl("", "excluded", ""),
+ }
+}
+
+func newDrawTableImpl(schemaName, tableName, alias string) drawTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ DrawerIDColumn = postgres.IntegerColumn("drawer_id")
+ DraweeIDColumn = postgres.IntegerColumn("drawee_id")
+ EventIDColumn = postgres.IntegerColumn("event_id")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ allColumns = postgres.ColumnList{IDColumn, DrawerIDColumn, DraweeIDColumn, EventIDColumn, CreatedAtColumn, UpdatedAtColumn}
+ mutableColumns = postgres.ColumnList{DrawerIDColumn, DraweeIDColumn, EventIDColumn, CreatedAtColumn, UpdatedAtColumn}
+ )
+
+ return drawTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ DrawerID: DrawerIDColumn,
+ DraweeID: DraweeIDColumn,
+ EventID: EventIDColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/event.go b/src/database/jet/postgres/public/table/event.go
new file mode 100644
index 00000000..93c5f0a5
--- /dev/null
+++ b/src/database/jet/postgres/public/table/event.go
@@ -0,0 +1,99 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Event = newEventTable("public", "event", "")
+
+type eventTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ Description postgres.ColumnString
+ Budget postgres.ColumnString
+ InvitationMessage postgres.ColumnString
+ DrawAt postgres.ColumnTimestampz
+ CloseAt postgres.ColumnTimestampz
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type EventTable struct {
+ eventTable
+
+ EXCLUDED eventTable
+}
+
+// AS creates new EventTable with assigned alias
+func (a EventTable) AS(alias string) *EventTable {
+ return newEventTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new EventTable with assigned schema name
+func (a EventTable) FromSchema(schemaName string) *EventTable {
+ return newEventTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new EventTable with assigned table prefix
+func (a EventTable) WithPrefix(prefix string) *EventTable {
+ return newEventTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new EventTable with assigned table suffix
+func (a EventTable) WithSuffix(suffix string) *EventTable {
+ return newEventTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newEventTable(schemaName, tableName, alias string) *EventTable {
+ return &EventTable{
+ eventTable: newEventTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newEventTableImpl("", "excluded", ""),
+ }
+}
+
+func newEventTableImpl(schemaName, tableName, alias string) eventTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ DescriptionColumn = postgres.StringColumn("description")
+ BudgetColumn = postgres.StringColumn("budget")
+ InvitationMessageColumn = postgres.StringColumn("invitation_message")
+ DrawAtColumn = postgres.TimestampzColumn("draw_at")
+ CloseAtColumn = postgres.TimestampzColumn("close_at")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, DescriptionColumn, BudgetColumn, InvitationMessageColumn, DrawAtColumn, CloseAtColumn, CreatedAtColumn, UpdatedAtColumn}
+ mutableColumns = postgres.ColumnList{NameColumn, DescriptionColumn, BudgetColumn, InvitationMessageColumn, DrawAtColumn, CloseAtColumn, CreatedAtColumn, UpdatedAtColumn}
+ )
+
+ return eventTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ Description: DescriptionColumn,
+ Budget: BudgetColumn,
+ InvitationMessage: InvitationMessageColumn,
+ DrawAt: DrawAtColumn,
+ CloseAt: CloseAtColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/link.go b/src/database/jet/postgres/public/table/link.go
new file mode 100644
index 00000000..69286c75
--- /dev/null
+++ b/src/database/jet/postgres/public/table/link.go
@@ -0,0 +1,90 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Link = newLinkTable("public", "link", "")
+
+type linkTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Code postgres.ColumnString
+ ExpirationDate postgres.ColumnTimestampz
+ EventID postgres.ColumnInteger
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type LinkTable struct {
+ linkTable
+
+ EXCLUDED linkTable
+}
+
+// AS creates new LinkTable with assigned alias
+func (a LinkTable) AS(alias string) *LinkTable {
+ return newLinkTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new LinkTable with assigned schema name
+func (a LinkTable) FromSchema(schemaName string) *LinkTable {
+ return newLinkTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new LinkTable with assigned table prefix
+func (a LinkTable) WithPrefix(prefix string) *LinkTable {
+ return newLinkTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new LinkTable with assigned table suffix
+func (a LinkTable) WithSuffix(suffix string) *LinkTable {
+ return newLinkTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newLinkTable(schemaName, tableName, alias string) *LinkTable {
+ return &LinkTable{
+ linkTable: newLinkTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newLinkTableImpl("", "excluded", ""),
+ }
+}
+
+func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ CodeColumn = postgres.StringColumn("code")
+ ExpirationDateColumn = postgres.TimestampzColumn("expiration_date")
+ EventIDColumn = postgres.IntegerColumn("event_id")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ allColumns = postgres.ColumnList{IDColumn, CodeColumn, ExpirationDateColumn, EventIDColumn, CreatedAtColumn, UpdatedAtColumn}
+ mutableColumns = postgres.ColumnList{CodeColumn, ExpirationDateColumn, EventIDColumn, CreatedAtColumn, UpdatedAtColumn}
+ )
+
+ return linkTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Code: CodeColumn,
+ ExpirationDate: ExpirationDateColumn,
+ EventID: EventIDColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/migration.go b/src/database/jet/postgres/public/table/migration.go
new file mode 100644
index 00000000..72be6568
--- /dev/null
+++ b/src/database/jet/postgres/public/table/migration.go
@@ -0,0 +1,81 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Migration = newMigrationTable("public", "migration", "")
+
+type migrationTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ MigrationDate postgres.ColumnTimestamp
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type MigrationTable struct {
+ migrationTable
+
+ EXCLUDED migrationTable
+}
+
+// AS creates new MigrationTable with assigned alias
+func (a MigrationTable) AS(alias string) *MigrationTable {
+ return newMigrationTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new MigrationTable with assigned schema name
+func (a MigrationTable) FromSchema(schemaName string) *MigrationTable {
+ return newMigrationTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new MigrationTable with assigned table prefix
+func (a MigrationTable) WithPrefix(prefix string) *MigrationTable {
+ return newMigrationTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new MigrationTable with assigned table suffix
+func (a MigrationTable) WithSuffix(suffix string) *MigrationTable {
+ return newMigrationTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newMigrationTable(schemaName, tableName, alias string) *MigrationTable {
+ return &MigrationTable{
+ migrationTable: newMigrationTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newMigrationTableImpl("", "excluded", ""),
+ }
+}
+
+func newMigrationTableImpl(schemaName, tableName, alias string) migrationTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ MigrationDateColumn = postgres.TimestampColumn("migration_date")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, MigrationDateColumn}
+ mutableColumns = postgres.ColumnList{IDColumn, NameColumn, MigrationDateColumn}
+ )
+
+ return migrationTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ MigrationDate: MigrationDateColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/participant.go b/src/database/jet/postgres/public/table/participant.go
new file mode 100644
index 00000000..bd45d769
--- /dev/null
+++ b/src/database/jet/postgres/public/table/participant.go
@@ -0,0 +1,105 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Participant = newParticipantTable("public", "participant", "")
+
+type participantTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ Email postgres.ColumnString
+ Address postgres.ColumnString
+ Organizer postgres.ColumnBool
+ Participates postgres.ColumnBool
+ Accepted postgres.ColumnBool
+ EventID postgres.ColumnInteger
+ UserID postgres.ColumnInteger
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type ParticipantTable struct {
+ participantTable
+
+ EXCLUDED participantTable
+}
+
+// AS creates new ParticipantTable with assigned alias
+func (a ParticipantTable) AS(alias string) *ParticipantTable {
+ return newParticipantTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new ParticipantTable with assigned schema name
+func (a ParticipantTable) FromSchema(schemaName string) *ParticipantTable {
+ return newParticipantTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new ParticipantTable with assigned table prefix
+func (a ParticipantTable) WithPrefix(prefix string) *ParticipantTable {
+ return newParticipantTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new ParticipantTable with assigned table suffix
+func (a ParticipantTable) WithSuffix(suffix string) *ParticipantTable {
+ return newParticipantTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newParticipantTable(schemaName, tableName, alias string) *ParticipantTable {
+ return &ParticipantTable{
+ participantTable: newParticipantTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newParticipantTableImpl("", "excluded", ""),
+ }
+}
+
+func newParticipantTableImpl(schemaName, tableName, alias string) participantTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ EmailColumn = postgres.StringColumn("email")
+ AddressColumn = postgres.StringColumn("address")
+ OrganizerColumn = postgres.BoolColumn("organizer")
+ ParticipatesColumn = postgres.BoolColumn("participates")
+ AcceptedColumn = postgres.BoolColumn("accepted")
+ EventIDColumn = postgres.IntegerColumn("event_id")
+ UserIDColumn = postgres.IntegerColumn("user_id")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, EmailColumn, AddressColumn, OrganizerColumn, ParticipatesColumn, AcceptedColumn, EventIDColumn, UserIDColumn, CreatedAtColumn, UpdatedAtColumn}
+ mutableColumns = postgres.ColumnList{NameColumn, EmailColumn, AddressColumn, OrganizerColumn, ParticipatesColumn, AcceptedColumn, EventIDColumn, UserIDColumn, CreatedAtColumn, UpdatedAtColumn}
+ )
+
+ return participantTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ Email: EmailColumn,
+ Address: AddressColumn,
+ Organizer: OrganizerColumn,
+ Participates: ParticipatesColumn,
+ Accepted: AcceptedColumn,
+ EventID: EventIDColumn,
+ UserID: UserIDColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/product.go b/src/database/jet/postgres/public/table/product.go
new file mode 100644
index 00000000..dfe463ff
--- /dev/null
+++ b/src/database/jet/postgres/public/table/product.go
@@ -0,0 +1,117 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Product = newProductTable("public", "product", "")
+
+type productTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Title postgres.ColumnString
+ Description postgres.ColumnString
+ ProductKey postgres.ColumnString
+ ImageURL postgres.ColumnString
+ TotalReviews postgres.ColumnInteger
+ Rating postgres.ColumnFloat
+ Price postgres.ColumnString
+ Currency postgres.ColumnString
+ URL postgres.ColumnString
+ CategoryID postgres.ColumnInteger
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+ ProductTs postgres.ColumnString
+ Origin postgres.ColumnString
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type ProductTable struct {
+ productTable
+
+ EXCLUDED productTable
+}
+
+// AS creates new ProductTable with assigned alias
+func (a ProductTable) AS(alias string) *ProductTable {
+ return newProductTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new ProductTable with assigned schema name
+func (a ProductTable) FromSchema(schemaName string) *ProductTable {
+ return newProductTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new ProductTable with assigned table prefix
+func (a ProductTable) WithPrefix(prefix string) *ProductTable {
+ return newProductTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new ProductTable with assigned table suffix
+func (a ProductTable) WithSuffix(suffix string) *ProductTable {
+ return newProductTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newProductTable(schemaName, tableName, alias string) *ProductTable {
+ return &ProductTable{
+ productTable: newProductTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newProductTableImpl("", "excluded", ""),
+ }
+}
+
+func newProductTableImpl(schemaName, tableName, alias string) productTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ TitleColumn = postgres.StringColumn("title")
+ DescriptionColumn = postgres.StringColumn("description")
+ ProductKeyColumn = postgres.StringColumn("product_key")
+ ImageURLColumn = postgres.StringColumn("image_url")
+ TotalReviewsColumn = postgres.IntegerColumn("total_reviews")
+ RatingColumn = postgres.FloatColumn("rating")
+ PriceColumn = postgres.StringColumn("price")
+ CurrencyColumn = postgres.StringColumn("currency")
+ URLColumn = postgres.StringColumn("url")
+ CategoryIDColumn = postgres.IntegerColumn("category_id")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ ProductTsColumn = postgres.StringColumn("product_ts")
+ OriginColumn = postgres.StringColumn("origin")
+ allColumns = postgres.ColumnList{IDColumn, TitleColumn, DescriptionColumn, ProductKeyColumn, ImageURLColumn, TotalReviewsColumn, RatingColumn, PriceColumn, CurrencyColumn, URLColumn, CategoryIDColumn, CreatedAtColumn, UpdatedAtColumn, ProductTsColumn, OriginColumn}
+ mutableColumns = postgres.ColumnList{TitleColumn, DescriptionColumn, ProductKeyColumn, ImageURLColumn, TotalReviewsColumn, RatingColumn, PriceColumn, CurrencyColumn, URLColumn, CategoryIDColumn, CreatedAtColumn, UpdatedAtColumn, OriginColumn}
+ )
+
+ return productTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Title: TitleColumn,
+ Description: DescriptionColumn,
+ ProductKey: ProductKeyColumn,
+ ImageURL: ImageURLColumn,
+ TotalReviews: TotalReviewsColumn,
+ Rating: RatingColumn,
+ Price: PriceColumn,
+ Currency: CurrencyColumn,
+ URL: URLColumn,
+ CategoryID: CategoryIDColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+ ProductTs: ProductTsColumn,
+ Origin: OriginColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/table_use_schema.go b/src/database/jet/postgres/public/table/table_use_schema.go
new file mode 100644
index 00000000..974bf6b3
--- /dev/null
+++ b/src/database/jet/postgres/public/table/table_use_schema.go
@@ -0,0 +1,22 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
+// this method only once at the beginning of the program.
+func UseSchema(schema string) {
+ Category = Category.FromSchema(schema)
+ Draw = Draw.FromSchema(schema)
+ Event = Event.FromSchema(schema)
+ Link = Link.FromSchema(schema)
+ Migration = Migration.FromSchema(schema)
+ Participant = Participant.FromSchema(schema)
+ Product = Product.FromSchema(schema)
+ User = User.FromSchema(schema)
+ Wish = Wish.FromSchema(schema)
+}
diff --git a/src/database/jet/postgres/public/table/user.go b/src/database/jet/postgres/public/table/user.go
new file mode 100644
index 00000000..f01a3dbf
--- /dev/null
+++ b/src/database/jet/postgres/public/table/user.go
@@ -0,0 +1,99 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var User = newUserTable("public", "user", "")
+
+type userTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ Email postgres.ColumnString
+ ImageURL postgres.ColumnString
+ Phone postgres.ColumnString
+ Admin postgres.ColumnBool
+ Active postgres.ColumnBool
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type UserTable struct {
+ userTable
+
+ EXCLUDED userTable
+}
+
+// AS creates new UserTable with assigned alias
+func (a UserTable) AS(alias string) *UserTable {
+ return newUserTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new UserTable with assigned schema name
+func (a UserTable) FromSchema(schemaName string) *UserTable {
+ return newUserTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new UserTable with assigned table prefix
+func (a UserTable) WithPrefix(prefix string) *UserTable {
+ return newUserTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new UserTable with assigned table suffix
+func (a UserTable) WithSuffix(suffix string) *UserTable {
+ return newUserTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newUserTable(schemaName, tableName, alias string) *UserTable {
+ return &UserTable{
+ userTable: newUserTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newUserTableImpl("", "excluded", ""),
+ }
+}
+
+func newUserTableImpl(schemaName, tableName, alias string) userTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ EmailColumn = postgres.StringColumn("email")
+ ImageURLColumn = postgres.StringColumn("image_url")
+ PhoneColumn = postgres.StringColumn("phone")
+ AdminColumn = postgres.BoolColumn("admin")
+ ActiveColumn = postgres.BoolColumn("active")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, EmailColumn, ImageURLColumn, PhoneColumn, AdminColumn, ActiveColumn, CreatedAtColumn, UpdatedAtColumn}
+ mutableColumns = postgres.ColumnList{NameColumn, EmailColumn, ImageURLColumn, PhoneColumn, AdminColumn, ActiveColumn, CreatedAtColumn, UpdatedAtColumn}
+ )
+
+ return userTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ Email: EmailColumn,
+ ImageURL: ImageURLColumn,
+ Phone: PhoneColumn,
+ Admin: AdminColumn,
+ Active: ActiveColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/table/wish.go b/src/database/jet/postgres/public/table/wish.go
new file mode 100644
index 00000000..54efc024
--- /dev/null
+++ b/src/database/jet/postgres/public/table/wish.go
@@ -0,0 +1,96 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package table
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var Wish = newWishTable("public", "wish", "")
+
+type wishTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ UserID postgres.ColumnInteger
+ ParticipantID postgres.ColumnInteger
+ ProductID postgres.ColumnInteger
+ EventID postgres.ColumnInteger
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+ Quantity postgres.ColumnInteger
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type WishTable struct {
+ wishTable
+
+ EXCLUDED wishTable
+}
+
+// AS creates new WishTable with assigned alias
+func (a WishTable) AS(alias string) *WishTable {
+ return newWishTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new WishTable with assigned schema name
+func (a WishTable) FromSchema(schemaName string) *WishTable {
+ return newWishTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new WishTable with assigned table prefix
+func (a WishTable) WithPrefix(prefix string) *WishTable {
+ return newWishTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new WishTable with assigned table suffix
+func (a WishTable) WithSuffix(suffix string) *WishTable {
+ return newWishTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newWishTable(schemaName, tableName, alias string) *WishTable {
+ return &WishTable{
+ wishTable: newWishTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newWishTableImpl("", "excluded", ""),
+ }
+}
+
+func newWishTableImpl(schemaName, tableName, alias string) wishTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ UserIDColumn = postgres.IntegerColumn("user_id")
+ ParticipantIDColumn = postgres.IntegerColumn("participant_id")
+ ProductIDColumn = postgres.IntegerColumn("product_id")
+ EventIDColumn = postgres.IntegerColumn("event_id")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ QuantityColumn = postgres.IntegerColumn("quantity")
+ allColumns = postgres.ColumnList{IDColumn, UserIDColumn, ParticipantIDColumn, ProductIDColumn, EventIDColumn, CreatedAtColumn, UpdatedAtColumn, QuantityColumn}
+ mutableColumns = postgres.ColumnList{UserIDColumn, ParticipantIDColumn, ProductIDColumn, EventIDColumn, CreatedAtColumn, UpdatedAtColumn, QuantityColumn}
+ )
+
+ return wishTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ UserID: UserIDColumn,
+ ParticipantID: ParticipantIDColumn,
+ ProductID: ProductIDColumn,
+ EventID: EventIDColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+ Quantity: QuantityColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/view/event_link.go b/src/database/jet/postgres/public/view/event_link.go
new file mode 100644
index 00000000..3fe89fc1
--- /dev/null
+++ b/src/database/jet/postgres/public/view/event_link.go
@@ -0,0 +1,108 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package view
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var EventLink = newEventLinkTable("public", "event_link", "")
+
+type eventLinkTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ Description postgres.ColumnString
+ Budget postgres.ColumnString
+ InvitationMessage postgres.ColumnString
+ DrawAt postgres.ColumnTimestampz
+ CloseAt postgres.ColumnTimestampz
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+ LinkID postgres.ColumnInteger
+ LinkCode postgres.ColumnString
+ LinkExpirationDate postgres.ColumnTimestampz
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type EventLinkTable struct {
+ eventLinkTable
+
+ EXCLUDED eventLinkTable
+}
+
+// AS creates new EventLinkTable with assigned alias
+func (a EventLinkTable) AS(alias string) *EventLinkTable {
+ return newEventLinkTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new EventLinkTable with assigned schema name
+func (a EventLinkTable) FromSchema(schemaName string) *EventLinkTable {
+ return newEventLinkTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new EventLinkTable with assigned table prefix
+func (a EventLinkTable) WithPrefix(prefix string) *EventLinkTable {
+ return newEventLinkTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new EventLinkTable with assigned table suffix
+func (a EventLinkTable) WithSuffix(suffix string) *EventLinkTable {
+ return newEventLinkTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newEventLinkTable(schemaName, tableName, alias string) *EventLinkTable {
+ return &EventLinkTable{
+ eventLinkTable: newEventLinkTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newEventLinkTableImpl("", "excluded", ""),
+ }
+}
+
+func newEventLinkTableImpl(schemaName, tableName, alias string) eventLinkTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ DescriptionColumn = postgres.StringColumn("description")
+ BudgetColumn = postgres.StringColumn("budget")
+ InvitationMessageColumn = postgres.StringColumn("invitation_message")
+ DrawAtColumn = postgres.TimestampzColumn("draw_at")
+ CloseAtColumn = postgres.TimestampzColumn("close_at")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ LinkIDColumn = postgres.IntegerColumn("link_id")
+ LinkCodeColumn = postgres.StringColumn("link_code")
+ LinkExpirationDateColumn = postgres.TimestampzColumn("link_expiration_date")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, DescriptionColumn, BudgetColumn, InvitationMessageColumn, DrawAtColumn, CloseAtColumn, CreatedAtColumn, UpdatedAtColumn, LinkIDColumn, LinkCodeColumn, LinkExpirationDateColumn}
+ mutableColumns = postgres.ColumnList{IDColumn, NameColumn, DescriptionColumn, BudgetColumn, InvitationMessageColumn, DrawAtColumn, CloseAtColumn, CreatedAtColumn, UpdatedAtColumn, LinkIDColumn, LinkCodeColumn, LinkExpirationDateColumn}
+ )
+
+ return eventLinkTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ Description: DescriptionColumn,
+ Budget: BudgetColumn,
+ InvitationMessage: InvitationMessageColumn,
+ DrawAt: DrawAtColumn,
+ CloseAt: CloseAtColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+ LinkID: LinkIDColumn,
+ LinkCode: LinkCodeColumn,
+ LinkExpirationDate: LinkExpirationDateColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/view/participant_user.go b/src/database/jet/postgres/public/view/participant_user.go
new file mode 100644
index 00000000..745a8cce
--- /dev/null
+++ b/src/database/jet/postgres/public/view/participant_user.go
@@ -0,0 +1,114 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package view
+
+import (
+ "github.com/go-jet/jet/v2/postgres"
+)
+
+var ParticipantUser = newParticipantUserTable("public", "participant_user", "")
+
+type participantUserTable struct {
+ postgres.Table
+
+ // Columns
+ ID postgres.ColumnInteger
+ Name postgres.ColumnString
+ Email postgres.ColumnString
+ Address postgres.ColumnString
+ Organizer postgres.ColumnBool
+ Participates postgres.ColumnBool
+ Accepted postgres.ColumnBool
+ EventID postgres.ColumnInteger
+ UserID postgres.ColumnInteger
+ CreatedAt postgres.ColumnTimestampz
+ UpdatedAt postgres.ColumnTimestampz
+ UserName postgres.ColumnString
+ UserEmail postgres.ColumnString
+ UserImageURL postgres.ColumnString
+
+ AllColumns postgres.ColumnList
+ MutableColumns postgres.ColumnList
+}
+
+type ParticipantUserTable struct {
+ participantUserTable
+
+ EXCLUDED participantUserTable
+}
+
+// AS creates new ParticipantUserTable with assigned alias
+func (a ParticipantUserTable) AS(alias string) *ParticipantUserTable {
+ return newParticipantUserTable(a.SchemaName(), a.TableName(), alias)
+}
+
+// Schema creates new ParticipantUserTable with assigned schema name
+func (a ParticipantUserTable) FromSchema(schemaName string) *ParticipantUserTable {
+ return newParticipantUserTable(schemaName, a.TableName(), a.Alias())
+}
+
+// WithPrefix creates new ParticipantUserTable with assigned table prefix
+func (a ParticipantUserTable) WithPrefix(prefix string) *ParticipantUserTable {
+ return newParticipantUserTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
+}
+
+// WithSuffix creates new ParticipantUserTable with assigned table suffix
+func (a ParticipantUserTable) WithSuffix(suffix string) *ParticipantUserTable {
+ return newParticipantUserTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
+}
+
+func newParticipantUserTable(schemaName, tableName, alias string) *ParticipantUserTable {
+ return &ParticipantUserTable{
+ participantUserTable: newParticipantUserTableImpl(schemaName, tableName, alias),
+ EXCLUDED: newParticipantUserTableImpl("", "excluded", ""),
+ }
+}
+
+func newParticipantUserTableImpl(schemaName, tableName, alias string) participantUserTable {
+ var (
+ IDColumn = postgres.IntegerColumn("id")
+ NameColumn = postgres.StringColumn("name")
+ EmailColumn = postgres.StringColumn("email")
+ AddressColumn = postgres.StringColumn("address")
+ OrganizerColumn = postgres.BoolColumn("organizer")
+ ParticipatesColumn = postgres.BoolColumn("participates")
+ AcceptedColumn = postgres.BoolColumn("accepted")
+ EventIDColumn = postgres.IntegerColumn("event_id")
+ UserIDColumn = postgres.IntegerColumn("user_id")
+ CreatedAtColumn = postgres.TimestampzColumn("created_at")
+ UpdatedAtColumn = postgres.TimestampzColumn("updated_at")
+ UserNameColumn = postgres.StringColumn("user_name")
+ UserEmailColumn = postgres.StringColumn("user_email")
+ UserImageURLColumn = postgres.StringColumn("user_image_url")
+ allColumns = postgres.ColumnList{IDColumn, NameColumn, EmailColumn, AddressColumn, OrganizerColumn, ParticipatesColumn, AcceptedColumn, EventIDColumn, UserIDColumn, CreatedAtColumn, UpdatedAtColumn, UserNameColumn, UserEmailColumn, UserImageURLColumn}
+ mutableColumns = postgres.ColumnList{IDColumn, NameColumn, EmailColumn, AddressColumn, OrganizerColumn, ParticipatesColumn, AcceptedColumn, EventIDColumn, UserIDColumn, CreatedAtColumn, UpdatedAtColumn, UserNameColumn, UserEmailColumn, UserImageURLColumn}
+ )
+
+ return participantUserTable{
+ Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
+
+ //Columns
+ ID: IDColumn,
+ Name: NameColumn,
+ Email: EmailColumn,
+ Address: AddressColumn,
+ Organizer: OrganizerColumn,
+ Participates: ParticipatesColumn,
+ Accepted: AcceptedColumn,
+ EventID: EventIDColumn,
+ UserID: UserIDColumn,
+ CreatedAt: CreatedAtColumn,
+ UpdatedAt: UpdatedAtColumn,
+ UserName: UserNameColumn,
+ UserEmail: UserEmailColumn,
+ UserImageURL: UserImageURLColumn,
+
+ AllColumns: allColumns,
+ MutableColumns: mutableColumns,
+ }
+}
diff --git a/src/database/jet/postgres/public/view/view_use_schema.go b/src/database/jet/postgres/public/view/view_use_schema.go
new file mode 100644
index 00000000..26ec156b
--- /dev/null
+++ b/src/database/jet/postgres/public/view/view_use_schema.go
@@ -0,0 +1,15 @@
+//
+// Code generated by go-jet DO NOT EDIT.
+//
+// WARNING: Changes to this file may cause incorrect behavior
+// and will be lost if the code is regenerated
+//
+
+package view
+
+// UseSchema sets a new schema name for all generated view SQL builder types. It is recommended to invoke
+// this method only once at the beginning of the program.
+func UseSchema(schema string) {
+ EventLink = EventLink.FromSchema(schema)
+ ParticipantUser = ParticipantUser.FromSchema(schema)
+}
diff --git a/src/database/link.sql.go b/src/database/link.sql.go
new file mode 100644
index 00000000..b0cdd489
--- /dev/null
+++ b/src/database/link.sql.go
@@ -0,0 +1,96 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: link.sql
+
+package database
+
+import (
+ "context"
+ "time"
+)
+
+const createLink = `-- name: CreateLink :one
+INSERT INTO "link" (
+ code,
+ expiration_date,
+ event_id
+) VALUES (
+ $1, $2, $3
+) RETURNING id, code, expiration_date, event_id, created_at, updated_at
+`
+
+type CreateLinkParams struct {
+ Code string `db:"code" json:"code"`
+ ExpirationDate time.Time `db:"expiration_date" json:"expirationDate"`
+ EventID int64 `db:"event_id" json:"eventId"`
+}
+
+func (q *Queries) CreateLink(ctx context.Context, arg CreateLinkParams) (Link, error) {
+ row := q.queryRow(ctx, q.createLinkStmt, createLink, arg.Code, arg.ExpirationDate, arg.EventID)
+ var i Link
+ err := row.Scan(
+ &i.ID,
+ &i.Code,
+ &i.ExpirationDate,
+ &i.EventID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findLinkByCode = `-- name: FindLinkByCode :one
+SELECT id, code, expiration_date, event_id, created_at, updated_at FROM "link" WHERE code = $1
+`
+
+func (q *Queries) FindLinkByCode(ctx context.Context, code string) (Link, error) {
+ row := q.queryRow(ctx, q.findLinkByCodeStmt, findLinkByCode, code)
+ var i Link
+ err := row.Scan(
+ &i.ID,
+ &i.Code,
+ &i.ExpirationDate,
+ &i.EventID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findLinkWithEventByCode = `-- name: FindLinkWithEventByCode :one
+SELECT
+ link.id, link.code, link.expiration_date, link.event_id, link.created_at, link.updated_at,
+ event.id, event.name, event.description, event.budget, event.invitation_message, event.draw_at, event.close_at, event.created_at, event.updated_at
+FROM "link"
+JOIN "event" ON "event"."id" = "link"."event_id"
+WHERE code = $1
+`
+
+type FindLinkWithEventByCodeRow struct {
+ Link Link `db:"link" json:"link"`
+ Event Event `db:"event" json:"event"`
+}
+
+func (q *Queries) FindLinkWithEventByCode(ctx context.Context, code string) (FindLinkWithEventByCodeRow, error) {
+ row := q.queryRow(ctx, q.findLinkWithEventByCodeStmt, findLinkWithEventByCode, code)
+ var i FindLinkWithEventByCodeRow
+ err := row.Scan(
+ &i.Link.ID,
+ &i.Link.Code,
+ &i.Link.ExpirationDate,
+ &i.Link.EventID,
+ &i.Link.CreatedAt,
+ &i.Link.UpdatedAt,
+ &i.Event.ID,
+ &i.Event.Name,
+ &i.Event.Description,
+ &i.Event.Budget,
+ &i.Event.InvitationMessage,
+ &i.Event.DrawAt,
+ &i.Event.CloseAt,
+ &i.Event.CreatedAt,
+ &i.Event.UpdatedAt,
+ )
+ return i, err
+}
diff --git a/src/database/migrations/1677972510226184_InitialMigration.sql b/src/database/migrations/1677972510226184_InitialMigration.sql
new file mode 100644
index 00000000..4e356233
--- /dev/null
+++ b/src/database/migrations/1677972510226184_InitialMigration.sql
@@ -0,0 +1,128 @@
+--
+-- Table structure for table category
+--
+CREATE TABLE "category" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "name" VARCHAR(255) NOT NULL,
+ "description" TEXT,
+ "category_url" TEXT,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table product
+--
+CREATE TYPE "currency_type" AS ENUM (
+ 'USD',
+ 'CAD'
+);
+
+CREATE TABLE "product" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "title" TEXT NOT NULL,
+ "description" TEXT,
+ "product_key" VARCHAR(255) UNIQUE NOT NULL,
+ "image_url" TEXT NOT NULL,
+ "total_reviews" INT NOT NULL,
+ "rating" REAL NOT NULL,
+ "price" MONEY NOT NULL,
+ "currency" "currency_type" NOT NULL DEFAULT 'USD',
+ "modified" TIMESTAMPTZ NOT NULL,
+ "website" TEXT NOT NULL,
+ "category_id" BIGINT REFERENCES "category"("id") ON DELETE SET NULL,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table user
+--
+CREATE TABLE "user" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "name" VARCHAR(255) NOT NULL,
+ "email" VARCHAR(255) UNIQUE NOT NULL,
+ "image_url" VARCHAR(255) NOT NULL,
+ "phone" VARCHAR(255),
+ "admin" BOOLEAN NOT NULL DEFAULT false,
+ "active" BOOLEAN NOT NULL DEFAULT false,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table event
+--
+CREATE TABLE "event" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "name" VARCHAR(255) NOT NULL,
+ "description" TEXT,
+ "budget" MONEY NOT NULL,
+ "invitation_message" TEXT NOT NULL,
+ "draw_at" TIMESTAMPTZ NOT NULL,
+ "close_at" TIMESTAMPTZ NOT NULL,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table link
+--
+CREATE TABLE "link" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "code" VARCHAR(255) NOT NULL,
+ "expiration_date" TIMESTAMPTZ NOT NULL,
+ "event_id" BIGINT REFERENCES "event"("id") ON DELETE CASCADE NOT NULL,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table participant
+--
+CREATE TABLE "participant" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "name" VARCHAR(255) NOT NULL,
+ "email" VARCHAR(255) NOT NULL,
+ "address" VARCHAR(255) NOT NULL,
+ "organizer" BOOLEAN NOT NULL DEFAULT false,
+ "participates" BOOLEAN NOT NULL DEFAULT true,
+ "accepted" BOOLEAN NOT NULL DEFAULT false,
+ "event_id" BIGINT REFERENCES "event"("id") ON DELETE CASCADE NOT NULL,
+ "user_id" BIGINT REFERENCES "user"("id") ON DELETE SET NULL,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table draw
+--
+CREATE TABLE "draw" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "drawer_id" BIGINT REFERENCES "participant"("id") ON DELETE CASCADE NOT NULL,
+ "drawee_id" BIGINT REFERENCES "participant"("id") ON DELETE CASCADE NOT NULL,
+ "event_id" BIGINT REFERENCES "event"("id") NOT NULL,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
+
+--
+-- Table structure for table wish
+--
+CREATE TABLE "wish" (
+ "id" BIGSERIAL UNIQUE PRIMARY KEY,
+ "user_id" BIGINT REFERENCES "user"("id") ON DELETE CASCADE NOT NULL,
+ "participant_id" BIGINT REFERENCES "participant"("id") ON DELETE CASCADE NOT NULL,
+ "product_id" BIGINT REFERENCES "product"("id") ON DELETE SET NULL,
+ "event_id" BIGINT REFERENCES "event"("id") ON DELETE CASCADE NOT NULL,
+
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT now(),
+ "updated_at" TIMESTAMPTZ NOT NULL DEFAULT now()
+);
diff --git a/src/database/migrations/1702348288671587_AddFullText.sql b/src/database/migrations/1702348288671587_AddFullText.sql
new file mode 100644
index 00000000..38f022a8
--- /dev/null
+++ b/src/database/migrations/1702348288671587_AddFullText.sql
@@ -0,0 +1,6 @@
+ALTER TABLE "product"
+ADD COLUMN "product_ts" tsvector
+ GENERATED ALWAYS AS (
+ setweight(to_tsvector('english', coalesce("title", '')), 'A') ||
+ setweight(to_tsvector('english', coalesce("description", '')), 'B')
+ ) STORED;
diff --git a/src/database/migrations/1702417351662711_AddProductOriginColumn.sql b/src/database/migrations/1702417351662711_AddProductOriginColumn.sql
new file mode 100644
index 00000000..b1195199
--- /dev/null
+++ b/src/database/migrations/1702417351662711_AddProductOriginColumn.sql
@@ -0,0 +1,5 @@
+ALTER TABLE "product"
+ RENAME COLUMN "website" TO "url";
+
+ALTER TABLE "product"
+ ADD COLUMN "origin" VARCHAR(50) NOT NULL;
\ No newline at end of file
diff --git a/src/database/migrations/1703017175290949_SeedProductData.sql b/src/database/migrations/1703017175290949_SeedProductData.sql
new file mode 100644
index 00000000..7f04dcf9
--- /dev/null
+++ b/src/database/migrations/1703017175290949_SeedProductData.sql
@@ -0,0 +1,1675 @@
+INSERT INTO public.category (id,"name",description,category_url,created_at,updated_at) VALUES
+ (43,'kitchen',NULL,NULL,'2023-12-19 15:12:00.513551-06','2023-12-19 15:12:00.513551-06'),
+ (44,'health',NULL,NULL,'2023-12-19 15:12:17.566556-06','2023-12-19 15:12:17.566556-06'),
+ (45,'dental',NULL,NULL,'2023-12-19 15:12:33.040871-06','2023-12-19 15:12:33.040871-06'),
+ (46,'men''s clothing',NULL,NULL,'2023-12-19 15:12:50.714064-06','2023-12-19 15:12:50.714064-06'),
+ (47,'women''s clothing',NULL,NULL,'2023-12-19 15:13:05.856557-06','2023-12-19 15:13:05.856557-06'),
+ (48,'iphone cases',NULL,NULL,'2023-12-19 15:13:21.550653-06','2023-12-19 15:13:21.550653-06'),
+ (49,'samsung cases',NULL,NULL,'2023-12-19 15:13:38.209896-06','2023-12-19 15:13:38.209896-06'),
+ (50,'oneplus cases',NULL,NULL,'2023-12-19 15:13:56.513981-06','2023-12-19 15:13:56.513981-06'),
+ (51,'pixel cases',NULL,NULL,'2023-12-19 15:14:11.661281-06','2023-12-19 15:14:11.661281-06'),
+ (52,'computer accessories',NULL,NULL,'2023-12-19 15:14:28.231941-06','2023-12-19 15:14:28.231941-06');
+INSERT INTO public.category (id,"name",description,category_url,created_at,updated_at) VALUES
+ (53,'men''s shoes',NULL,NULL,'2023-12-19 15:14:44.6195-06','2023-12-19 15:14:44.6195-06'),
+ (54,'women''s shoes',NULL,NULL,'2023-12-19 15:15:01.944376-06','2023-12-19 15:15:01.944376-06'),
+ (55,'outdoor',NULL,NULL,'2023-12-19 15:15:18.463727-06','2023-12-19 15:15:18.463727-06'),
+ (56,'manga',NULL,NULL,'2023-12-19 15:17:45.942091-06','2023-12-19 15:17:45.942091-06'),
+ (57,'travel accessories',NULL,NULL,'2023-12-19 15:18:00.372836-06','2023-12-19 15:18:00.372836-06'),
+ (58,'decoration',NULL,NULL,'2023-12-19 15:18:16.034732-06','2023-12-19 15:18:16.034732-06');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3168,'VAL CUCINA Retro Style Infrared Heating Air Fryer Toaster Oven, Extra Large Countertop Convection Oven 10-in-1 Combo, 6-Slice Toast, Enamel Baking Pan Easy Clean with Recipe Book, Green Color',NULL,'B0BTN5QMBJ','https://m.media-amazon.com/images/I/61cWwI1bSrL._AC_UL320_.jpg',236,4.6,'$249.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfYXRmOjIwMDE3NjAxMTc3MTA5ODo6MDo6&url=%2FVAL-CUCINA-Ultra-Quick-Multifunctional-Accessories%2Fdp%2FB0BTN5QMBJ%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',43,'2023-12-19 15:12:00.528294-06','2023-12-19 15:12:00.528294-06','www.amazon.com'),
+ (3169,'JoyJolt JoyFul 24pc(12 Airtight, Freezer Safe Food Storage Containers and 12 Lids), Pantry Kitchen Storage Containers, Glass Meal Prep Container for Lunch, Glass Storage Containers with Lids',NULL,'B09N4ZKCH6','https://m.media-amazon.com/images/I/917BTSQCT6L._AC_UL320_.jpg',8541,4.6,'$38.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JoyJolt-Borosilicate-Containers-Airtight-Container/dp/B09N4ZKCH6/ref=sr_1_2?keywords=kitchen&qid=1703020319&sr=8-2',43,'2023-12-19 15:12:00.54123-06','2023-12-19 15:12:00.54123-06','www.amazon.com'),
+ (3170,'NutriChef Non-Stick Kitchen Oven Baking Pans-Deluxe & Stylish Nonstick Gray Coating Inside Outside, Commercial Grade Restaurant Quality Metal Bakeware with Red Silicone Handles NCSBS3S, 3 Piece Set',NULL,'B089N57JGS','https://m.media-amazon.com/images/I/71+8ct7NbAL._AC_UL320_.jpg',15574,4.5,'$19.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nutrichef-Pans-Deluxe-Nonstick-Bakeware-Silicone/dp/B089N57JGS/ref=sr_1_4?keywords=kitchen&qid=1703020319&sr=8-4',43,'2023-12-19 15:12:00.547664-06','2023-12-19 15:12:00.547664-06','www.amazon.com'),
+ (4553,'DDgro Travel Accessories Organizer Electronics Pouch for Keeping Certificates Charger/Power Bank/Cables/Mouse/Earphone (Medium, Black)',NULL,'B09J4CT232','https://m.media-amazon.com/images/I/81cPf-LxaJL._AC_UL320_.jpg',4595,4.5,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfYXRmX25leHQ6MjAwMDgxMDM4MTI1NTk4OjowOjo&url=%2FDDgro-Accessories-Electronics-Certificates-Stationeries%2Fdp%2FB09J4CT232%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',57,'2023-12-19 15:18:07.856631-06','2023-12-19 15:18:07.856631-06','www.amazon.com'),
+ (3172,'SodaStream Art Sparkling Water Maker Bundle (Misty Blue), with CO2, DWS Bottles, and Bubly Drops Flavors',NULL,'B09SN3DYY6','https://m.media-amazon.com/images/I/61DxklhkvfL._AC_UL320_.jpg',2009,4.6,'$145.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzExMDUwMDQzMTYwNzE3OjE3MDMwMjAzMTk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA2NTMyODk4NDQwMjo6MDo6&url=%2FSodaStream-Sparkling-Bundle-Bottles-Flavors%2Fdp%2FB09SN3DYY6%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dkitchen%26keywords%3Dkitchen%26pd_rd_i%3DB09SN3DYY6%26pd_rd_r%3D0608adb7-b7e3-4d7a-bd56-8a24ad8d3cfe%26pd_rd_w%3DpToBV%26pd_rd_wg%3DvZvxb%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DHHR7054K8QZ4XP50CHQ1%26qid%3D1703020319%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',43,'2023-12-19 15:12:00.561406-06','2023-12-19 15:12:00.561406-06','www.amazon.com'),
+ (3173,'Wanbasion Black Stainless Steel Knife Set, Sharp Kitchen Knife Set Professional, Kitchen Knife Set Dishwasher Safe with Covers for Cooking',NULL,'B07GH3KQS5','https://m.media-amazon.com/images/I/61T+gxwFNfL._AC_UL320_.jpg',15301,4.3,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzExMDUwMDQzMTYwNzE3OjE3MDMwMjAzMTk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA1MDA4OTMwOTEwMjo6MTo6&url=%2FWanbasion-TK-80812-Stainless-Professional-Dishwasher%2Fdp%2FB07GH3KQS5%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dkitchen%26keywords%3Dkitchen%26pd_rd_i%3DB07GH3KQS5%26pd_rd_r%3D0608adb7-b7e3-4d7a-bd56-8a24ad8d3cfe%26pd_rd_w%3DpToBV%26pd_rd_wg%3DvZvxb%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DHHR7054K8QZ4XP50CHQ1%26qid%3D1703020319%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',43,'2023-12-19 15:12:00.570062-06','2023-12-19 15:12:00.570062-06','www.amazon.com'),
+ (3174,'Knife Set, 15 Pieces Kitchen Knife Block Set with Built in Knife Sharpener Block, Dishwasher Safe, German Stainless Steel, Best Gift, Silver',NULL,'B0CL4FRXL3','https://m.media-amazon.com/images/I/71gkdQWY05L._AC_UL320_.jpg',48,4.7,'$196.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzExMDUwMDQzMTYwNzE3OjE3MDMwMjAzMTk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5OTA2OTk1NDYwMjo6Mzo6&url=%2FPieces-Kitchen-Sharpener-Dishwasher-Stainless%2Fdp%2FB0CL4FRXL3%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dkitchen%26keywords%3Dkitchen%26pd_rd_i%3DB0CL4FRXL3%26pd_rd_r%3D0608adb7-b7e3-4d7a-bd56-8a24ad8d3cfe%26pd_rd_w%3DpToBV%26pd_rd_wg%3DvZvxb%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DHHR7054K8QZ4XP50CHQ1%26qid%3D1703020319%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',43,'2023-12-19 15:12:00.576444-06','2023-12-19 15:12:00.576444-06','www.amazon.com'),
+ (3171,'imarku 16-Piece Knife Set with Block, Kitchen Knife Set, Professional German Stainless Steel Knife Set with 6 Steak Knives and Knife Sharpener, Unique Hammered Design, Christmas Gifts for Women Men',NULL,'B09LCLH556','https://m.media-amazon.com/images/I/71dMxM4h4TL._AC_UL320_.jpg',1713,4.7,'$149.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzExMDUwMDQzMTYwNzE3OjE3MDMwMjAzMTk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDEwMzE5NjE0MTEwMjo6NDo6&url=%2Fimarku-16-Piece-Professional-Stainless-Sharpener%2Fdp%2FB09LCLH556%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dkitchen%26keywords%3Dkitchen%26pd_rd_i%3DB09LCLH556%26pd_rd_r%3D0608adb7-b7e3-4d7a-bd56-8a24ad8d3cfe%26pd_rd_w%3DpToBV%26pd_rd_wg%3DvZvxb%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DHHR7054K8QZ4XP50CHQ1%26qid%3D1703020319%26sbo%3DTc8eqSFhUl4VwMzbE4fw%252Fw%253D%253D%26sr%3D1-5-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',43,'2023-12-19 15:12:00.554156-06','2023-12-19 15:12:00.582932-06','www.amazon.com'),
+ (3175,'Fullstar Vegetable Chopper - Spiralizer Vegetable Slicer - Onion Chopper with Container - Pro Food Chopper - Slicer Dicer Cutter - (4 in 1, White)',NULL,'B0764HS4SL','https://m.media-amazon.com/images/I/81m5GFr6aeL._AC_UL320_.jpg',112698,4.5,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vegetable-Chopper-Spiralizer-Slicer-Choppers/dp/B0764HS4SL/ref=sr_1_5?keywords=kitchen&qid=1703020319&sr=8-5',43,'2023-12-19 15:12:00.589022-06','2023-12-19 15:12:00.589022-06','www.amazon.com'),
+ (3176,'MuellerLiving Hand Blender, Immersion Blender, Hand Mixer with Attachments: Stainless Steel Blade, Whisk, Milk Frother',NULL,'B075X1KPLZ','https://m.media-amazon.com/images/I/61FOvMLDbbL._AC_UL320_.jpg',48820,4.4,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MuellerLiving-Blender-Immersion-Mixer-Attachments/dp/B075X1KPLZ/ref=sr_1_6?keywords=kitchen&qid=1703020319&sr=8-6',43,'2023-12-19 15:12:00.596828-06','2023-12-19 15:12:00.596828-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3177,'Ninja BC151EM Blast Portable Blender, Cordless, 18oz. Vessel, Personal Blender-for Shakes & Smoothies, BPA Free, Leakproof-Lid & Sip Spout, USB-C Rechargeable, Dishwasher Safe Parts, Forest Green',NULL,'B0C2FP4XNJ','https://m.media-amazon.com/images/I/71M8L+rzNML._AC_UL320_.jpg',923,4.3,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ninja-BC151EM-Smoothies-Rechargeable-Dishwasher/dp/B0C2FP4XNJ/ref=sr_1_7?keywords=kitchen&qid=1703020319&sr=8-7',43,'2023-12-19 15:12:00.607454-06','2023-12-19 15:12:00.607454-06','www.amazon.com'),
+ (3178,'Ninja MC1101 Foodi Everyday Possible Cooker Pro, 8-in-1 Versatility, 6.5 QT, One-Pot Cooking, Replaces 10 Cooking Tools, Faster Cooking, Family-Sized Capacity, Adjustable Temp Control, Midnight Blue',NULL,'B0CDHP76FP','https://m.media-amazon.com/images/I/71GhytEjuYL._AC_UL320_.jpg',32,4.8,'$119.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ninja-MC1101-Versatility-Family-Sized-Adjustable/dp/B0CDHP76FP/ref=sr_1_8?keywords=kitchen&qid=1703020319&sr=8-8',43,'2023-12-19 15:12:00.616445-06','2023-12-19 15:12:00.616445-06','www.amazon.com'),
+ (3179,'Silicone Faucet Handle Drip Catcher Tray Mat, Silicone Faucet Mat Dish Soap Sponge Holder for Kitchen Sink Accessories Gadgets, Drying Mat for Kitchen Counter Bathroom Kitchen Sink Splash Guard -Grey',NULL,'B09XJ1Z8CV','https://m.media-amazon.com/images/I/71Id74T3vNL._AC_UL320_.jpg',2789,4.0,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Silicone-Catcher-Kitchen-Accessories-Bathroom/dp/B09XJ1Z8CV/ref=sr_1_9?keywords=kitchen&qid=1703020319&sr=8-9',43,'2023-12-19 15:12:00.625833-06','2023-12-19 15:12:00.625833-06','www.amazon.com'),
+ (3180,'Zulay Kitchen 9-Piece Teak Wooden Utensils for Cooking - Smooth Finish Natural Teak Utensil Set - Non-Stick Wooden Spoons for Cooking - Kitchen Gift Set - Comfortable Grip Wooden Utensil Set',NULL,'B0C6YM8GDJ','https://m.media-amazon.com/images/I/81zxX05QaiL._AC_UL320_.jpg',3252,4.7,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zulay-Kitchen-9-Piece-Utensils-Cooking/dp/B0C6YM8GDJ/ref=sr_1_10?keywords=kitchen&qid=1703020319&sr=8-10',43,'2023-12-19 15:12:00.634899-06','2023-12-19 15:12:00.634899-06','www.amazon.com'),
+ (3181,'Airthereal Revive Electric Kitchen Composter, 2.5L Capacity with SHARKSDEN Tri-Blade, Turn Food Waste and Scraps into Dry Compost Fertilizer for Plants',NULL,'B0BQYMQYTY','https://m.media-amazon.com/images/I/61TW-KiJk3L._AC_UL320_.jpg',254,4.3,'$349.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDEyNTM2NjEyMDA5ODo6MDo6&url=%2FAirthereal-Revive-Composter-SHARKSDEN%25C2%25AE-Fertilizer%2Fdp%2FB0BQYMQYTY%2Fref%3Dsr_1_11_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.641893-06','2023-12-19 15:12:00.641893-06','www.amazon.com'),
+ (3227,'Roll Up Dish Drying Rack, Roll Over The Sink Dish Drying Rack Kitchen Rolling Dish Drainer, Foldable Sink Rack Mat Stainless Steel Wire Dish Drying Rack for Kitchen Sink Counter (17.5''''x11.8'''')',NULL,'B08S6M3NXV','https://m.media-amazon.com/images/I/71PuaIFVAIL._AC_UL320_.jpg',35253,4.6,'$6.82','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Seropy-Kitchen-Foldable-Stainless-17-8x11-8/dp/B08S6M3NXV/ref=sr_1_59?keywords=kitchen&qid=1703020319&sr=8-59',43,'2023-12-19 15:12:01.031102-06','2023-12-19 15:12:01.031102-06','www.amazon.com'),
+ (3182,'WILDMOK Chef Knife,8 inch Damascus Japanese kitchen knives,VG10 Steel&Resin Handle Chef Knife,Hammered Finish chef''s knives,Japanese damascus knife Including Gift Box',NULL,'B09L86M7SD','https://m.media-amazon.com/images/I/81PJmHmVCjL._AC_UL320_.jpg',43,4.5,'$84.14','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDE2MzQwNjc3ODY5ODo6MDo6&url=%2FWILDMOK-Damascus-Orange-Hammered-Yellow-green%2Fdp%2FB09L86M7SD%2Fref%3Dsr_1_13_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-13-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.649496-06','2023-12-19 15:12:00.649496-06','www.amazon.com'),
+ (3183,'VaeFae Bamboo Silverware Drawer Organizer Kitchen, Expandable Utensil Holder and Cutlery Tray with Divider, Flatware Storage and Removable Knife Block',NULL,'B083HTHL5T','https://m.media-amazon.com/images/I/81FWOOqBJUL._AC_UL320_.jpg',7757,4.7,'$30.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDA1MDk3ODcxOTQ2MTo6MDo6&url=%2FOrganizer-Expandable-Flatware-Removable-Supplies%2Fdp%2FB083HTHL5T%2Fref%3Dsr_1_14_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-14-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.656533-06','2023-12-19 15:12:00.656533-06','www.amazon.com'),
+ (3185,'Utopia Kitchen Clear Soda Can Organizer - Fridge Organizer Bins - Set of 4 Drink Organizer For Fridge or Countertop - Soda Can Dispenser For Refrigerator Organizing - Fridge Organization and Storage',NULL,'B0BBRF3MPM','https://m.media-amazon.com/images/I/91O3aNfoPgL._AC_UL320_.jpg',2266,4.7,'$16.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Utopia-Kitchen-Organizer-Pantry-Pack/dp/B0BBRF3MPM/ref=sr_1_15?keywords=kitchen&qid=1703020319&sr=8-15',43,'2023-12-19 15:12:00.673924-06','2023-12-19 15:12:00.673924-06','www.amazon.com'),
+ (3186,'CAROTE Pots and Pans Set Nonstick, White Granite Induction Kitchen Cookware Sets, 10 Pcs Non Stick Cooking Set w/Frying Pans & Saucepans(PFOS, PFOA Free)',NULL,'B09KHBBCKW','https://m.media-amazon.com/images/I/71wGpsLN4ZL._AC_UL320_.jpg',14489,4.5,'$79.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nonstick-Granite-Cookware-Kitchen-Induction/dp/B09KHBBCKW/ref=sr_1_16?keywords=kitchen&qid=1703020319&sr=8-16',43,'2023-12-19 15:12:00.682528-06','2023-12-19 15:12:00.682528-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3187,'Farberware 22-Piece Never Needs Sharpening Triple Rivet High-Carbon Stainless Steel Knife Block and Kitchen Tool Set, Black',NULL,'B01DB285NW','https://m.media-amazon.com/images/I/71OYg-qNW6L._AC_UL320_.jpg',24059,4.4,'$18.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Farberware-5152501-Sharpening-High-Carbon-Stainless/dp/B01DB285NW/ref=sr_1_17?keywords=kitchen&qid=1703020319&sr=8-17',43,'2023-12-19 15:12:00.691392-06','2023-12-19 15:12:00.691392-06','www.amazon.com'),
+ (3188,'Fullstar All-in-1 Vegetable Chopper, Mandoline Slicer & Cheese Grater - Multi Blade French Fry Cutter & Veggie Dicer - Includes Bonus Handheld Spiralizer & Kitchen Gadgets (5 in 1, Black/White)',NULL,'B07VG4S38C','https://m.media-amazon.com/images/I/91FaDhyATZL._AC_UL320_.jpg',23444,4.6,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fullstar-Mandoline-Slicer-Spiralizer-Vegetable/dp/B07VG4S38C/ref=sr_1_18?keywords=kitchen&qid=1703020319&sr=8-18',43,'2023-12-19 15:12:00.699201-06','2023-12-19 15:12:00.699201-06','www.amazon.com'),
+ (3189,'Baking Pan 10 Piece Set Nonstick Carbon Steel Gray Oven Bakeware Kitchen Set, 2 Cookie Sheets, 2 Round Cake Pans, Square Pan, Roasting Pan, Loaf Pan, Crisp Pan, Pizza Crisper, & Muffin Pan by PERLLI',NULL,'B01KVZYI2Y','https://m.media-amazon.com/images/I/81jyaXNwmqL._AC_UL320_.jpg',1077,4.5,'$54.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDAzMTYwNjAwNzY0MTo6MDo6&url=%2FNonstick-Bakeware-Kitchen-Roasting-PERLLI%2Fdp%2FB01KVZYI2Y%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.706737-06','2023-12-19 15:12:00.706737-06','www.amazon.com'),
+ (3299,'The CBT Workbook for Mental Health: Evidence-Based Exercises to Transform Negative Thoughts and Manage Your Well-Being',NULL,'B09BBHZV2N','https://m.media-amazon.com/images/I/61LzrdlkQGL._AC_UL320_.jpg',1060,4.7,'$11.34','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CBT-Workbook-Mental-Health-Evidence-Based/dp/B09BBHZV2N/ref=sr_1_13?keywords=health&qid=1703020336&sr=8-13',44,'2023-12-19 15:12:17.679991-06','2023-12-19 15:12:17.679991-06','www.amazon.com'),
+ (3300,'Bloom Nutrition Super Greens Powder Smoothie & Juice Mix - Probiotics for Digestive Health & Bloating Relief for Women, Digestive Enzymes with Superfoods Spirulina & Chlorella for Gut Health (Mango)',NULL,'B0B3D6TMKS','https://m.media-amazon.com/images/I/51bcP+2jGnL._AC_UL320_.jpg',1154,4.3,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bloom-Nutrition-Super-Greens-Powder-Smoothie-Juice-Mix/dp/B0B3D6TMKS/ref=sr_1_15?keywords=health&qid=1703020336&rdc=1&sr=8-15',44,'2023-12-19 15:12:17.687472-06','2023-12-19 15:12:17.687472-06','www.amazon.com'),
+ (3453,'Dental Herb Company - Tooth & Gums Tonic (18 oz.) Mouthwash',NULL,'B01C5YB7LE','https://m.media-amazon.com/images/I/61Ba+I5zpGL._AC_UL320_.jpg',3221,4.7,'$38.72','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Herb-Company-Tooth-Bottle/dp/B01C5YB7LE/ref=sr_1_61?keywords=dental&qid=1703020360&sr=8-61',45,'2023-12-19 15:12:42.121164-06','2023-12-19 15:12:42.121164-06','www.amazon.com'),
+ (3190,'Vtopmart Airtight Food Storage Containers with Lids, 24 pcs Plastic Kitchen and Pantry Organization Canisters for Cereal, Dry Food, Flour and Sugar, BPA Free, Includes 24 Labels',NULL,'B08ZK5WDWN','https://m.media-amazon.com/images/I/A1VmA3GVSiL._AC_UL320_.jpg',15058,4.7,'$37.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDAyNDU2MjM0Mjg5ODo6MDo6&url=%2FAirtight-Containers-Vtopmart-Organization-Canisters%2Fdp%2FB08ZK5WDWN%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.71534-06','2023-12-19 15:12:00.71534-06','www.amazon.com'),
+ (3191,'SUMMUE Wooden Cutting Boards for Kitchen - 19" x 15" Set of 4 Acacia Wood Large Charcuterie Boards Set with Puzzle Handles Chopping Boards for Meat, Cheese, Fruits, Vegetables, Bread, Charcuterie',NULL,'B0C65SJF7J','https://m.media-amazon.com/images/I/61y-eSRpLXL._AC_UL320_.jpg',38,4.6,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjMwMDA1NzM2NDM1OTQwMjo6MDo6&url=%2FSUMMUE-Wooden-Cutting-Boards-Kitchen%2Fdp%2FB0C65SJF7J%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.723663-06','2023-12-19 15:12:00.723663-06','www.amazon.com'),
+ (3192,'LEVOIT Air Purifiers for Home Large Room with Washable Filter, 3-Channel Air Quality Monitor, Smart WiFi and Filter for Pets, Allergies, Smoke, Dust, Pollen, Alexa Control, 1395 Ft², EverestAir',NULL,'B0B252LDH7','https://m.media-amazon.com/images/I/81ktS7yuyBL._AC_UL320_.jpg',16172,4.7,'$499.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDExMDg5NTczNjY5ODo6MDo6&url=%2FLEVOIT-Purifiers-Captures-Particles-Allergies%2Fdp%2FB0B252LDH7%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.732049-06','2023-12-19 15:12:00.732049-06','www.amazon.com'),
+ (3193,'Mixing Bowls with Airtight Lids Set, 26PCS Stainless Steel Khaki Bowls with Grater Attachments, Non-Slip Bottoms & Kitchen Gadgets Set, Size 7, 4, 2.5, 2.0,1.5, 1QT, Great for Mixing & Serving',NULL,'B0BWHJ1FNK','https://m.media-amazon.com/images/I/71CS445b7eL._AC_UL320_.jpg',539,4.6,'$47.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Airtight-Stainless-Attachments-Non-Slip-Bottoms/dp/B0BWHJ1FNK/ref=sr_1_23?keywords=kitchen&qid=1703020319&sr=8-23',43,'2023-12-19 15:12:00.739729-06','2023-12-19 15:12:00.739729-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3194,'Magic Bullet Blender, Small, Silver, 11 Piece Set',NULL,'B012T634SM','https://m.media-amazon.com/images/I/61w2Tj7r0BL._AC_UL320_.jpg',102329,4.5,'$39.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Magic-Bullet-Blender-Small-Silver/dp/B012T634SM/ref=sr_1_24?keywords=kitchen&qid=1703020319&sr=8-24',43,'2023-12-19 15:12:00.747908-06','2023-12-19 15:12:00.747908-06','www.amazon.com'),
+ (3195,'HuggieGems 4 Pack Magnetic Spice Storage Rack Organizer for Refrigerator and Oven, Black Fridge Organizers and Storage',NULL,'B0C3H9MJQV','https://m.media-amazon.com/images/I/51imrSup74L._AC_UL320_.jpg',575,4.8,'$18.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HuggieGems-Magnetic-Organizer-Refrigerator-Organizers/dp/B0C3H9MJQV/ref=sr_1_25?keywords=kitchen&qid=1703020319&sr=8-25',43,'2023-12-19 15:12:00.756893-06','2023-12-19 15:12:00.756893-06','www.amazon.com'),
+ (3196,'StepRite Kitchen Mats, 2PCS Kitchen Rugs, Cushioned Anti Fatigue Kitchen Mats for Floor, Non-Slip Standing Desk Mat, Waterproof Kitchen Rug Set for Kitchen, Floor, Office,17.3"×30"+17.3"×47",Black',NULL,'B0C2Y3T5LN','https://m.media-amazon.com/images/I/81NRhd43iAL._AC_UL320_.jpg',687,4.5,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/StepRite-Cushioned-Non-Slip-Standing-Waterproof/dp/B0C2Y3T5LN/ref=sr_1_26?keywords=kitchen&qid=1703020319&sr=8-26',43,'2023-12-19 15:12:00.764923-06','2023-12-19 15:12:00.764923-06','www.amazon.com'),
+ (4554,'NISHEL Travel Toiletry Bag for Women Large Capacity, Travel Essentials Organizer, Hanging Makeup Case for Accessories, Cosmetics, Toiletries, Pink',NULL,'B08JTPNQP1','https://m.media-amazon.com/images/I/71ZVoI4DDRL._AC_UL320_.jpg',11632,4.8,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfYXRmX25leHQ6MjAwMDU4OTk2NTAzODk4OjowOjo&url=%2FNISHEL-Sections-Toiletry-Organizer-Resistant%2Fdp%2FB08JTPNQP1%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',57,'2023-12-19 15:18:07.874772-06','2023-12-19 15:18:07.874772-06','www.amazon.com'),
+ (3198,'BRODARK Japanese Chef Knife, Damascus Chef Knife 8 inch with Japanese VG-10 Steel Core, Ultra-Sharp Professional Kitchen Knife, Handcrafted with Ebony Wood Handle, Holiday Gifts',NULL,'B09PVB1HYR','https://m.media-amazon.com/images/I/71lI+G5-xxL._AC_UL320_.jpg',187,4.6,'$115.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDExNDQ2MDQ3NjU5ODo6MDo6&url=%2FBRODARK-Damascus-Japanese-Professional-Ergonomic%2Fdp%2FB09PVB1HYR%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.779791-06','2023-12-19 15:12:00.779791-06','www.amazon.com'),
+ (3199,'Schmidt Brothers 12-Piece Kitchen Knife Set, High-Carbon German Stainless Steel Cutlery Two-stage Knife Sharpener and Clear Acrylic Magnetic Knife Block',NULL,'B09D8NWX3D','https://m.media-amazon.com/images/I/71fQGsye62L._AC_UL320_.jpg',137,4.4,'$169.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDA2MTg2NDk2MTM5ODo6MDo6&url=%2FSchmidt-High-Carbon-Stainless-Two-stage-Sharpener%2Fdp%2FB09D8NWX3D%2Fref%3Dsr_1_29_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-29-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.788304-06','2023-12-19 15:12:00.788304-06','www.amazon.com'),
+ (3200,'Kitchen Utensils Set- 34PCS Silicone Cooking Utensils with Holder, Umite Chef Heat Resistant Kitchen Utensil Spatula Set for Nonstick Cookware, Black Wooden Handles Kitchen Gadgets Tools Set',NULL,'B0C98ZRDVK','https://m.media-amazon.com/images/I/7189iDV4TYL._AC_UL320_.jpg',214,4.4,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Utensils-Silicone-Umite-Chef-Resistant/dp/B0C98ZRDVK/ref=sr_1_30?keywords=kitchen&qid=1703020319&sr=8-30',43,'2023-12-19 15:12:00.795792-06','2023-12-19 15:12:00.795792-06','www.amazon.com'),
+ (3201,'Herb Scissors, Kitchen Herb Shears Cutter with 5 Blades and Cover, Sharp Dishwasher Safe Kitchen Gadget - Green',NULL,'B07DPCCBZT','https://m.media-amazon.com/images/I/81-N0JsOEPL._AC_UL320_.jpg',2542,4.4,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Scissors-Stainless-Cleaning-Multipurpose-Dishwasher/dp/B07DPCCBZT/ref=sr_1_31?keywords=kitchen&qid=1703020319&sr=8-31',43,'2023-12-19 15:12:00.804144-06','2023-12-19 15:12:00.804144-06','www.amazon.com'),
+ (3202,'Powerful Immersion Blender, Electric Hand Blender 500 Watt with Turbo Mode, Detachable Base. Handheld Kitchen Gadget Blender Stick for Soup, Smoothie, Puree, Baby Food, 304 Stainless Steel Blades',NULL,'B09WF796VW','https://m.media-amazon.com/images/I/81A6emwYQGL._AC_UL320_.jpg',4288,4.5,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Powerful-Immersion-Electric-Detachable-Stainless/dp/B09WF796VW/ref=sr_1_32?keywords=kitchen&qid=1703020319&sr=8-32',43,'2023-12-19 15:12:00.811808-06','2023-12-19 15:12:00.811808-06','www.amazon.com'),
+ (3203,'Oil Sprayer, 100ml Olive Oil Dispenser, Cooking Oil Spray Bottle, Vinegar Soy Sauce Dispenser, Oil Mister for air fryer kitchen gadgets accessories, for Cooking Baking Roasting Frying Use',NULL,'B09SW7TPCR','https://m.media-amazon.com/images/I/71D6yJai6LL._AC_UL320_.jpg',1850,4.2,'$9.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MISSOLO-Sprayer-Dispenser-Stainless-Roasting/dp/B09SW7TPCR/ref=sr_1_33?keywords=kitchen&qid=1703020319&sr=8-33',43,'2023-12-19 15:12:00.820323-06','2023-12-19 15:12:00.820323-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3204,'Butter Dish with Lid and Knife for Countertop, Airtight Butter Keeper for Counter or Fridge, Ceramic Butter Container with Thick Acacia Wood Lid, for Modern Kitchen Decor and Accessories, White',NULL,'B09YH5XWQ1','https://m.media-amazon.com/images/I/61fxv8Hg3QL._AC_UL320_.jpg',1074,4.7,'$16.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Farmhouse-Butter-Countertop-Container-Accessories/dp/B09YH5XWQ1/ref=sr_1_34?keywords=kitchen&qid=1703020319&sr=8-34',43,'2023-12-19 15:12:00.827485-06','2023-12-19 15:12:00.827485-06','www.amazon.com'),
+ (3205,'KitchenClouds Kitchen Mat Cushioned Anti Fatigue Rug 17.3"x28" Waterproof, Non Slip, Standing and Comfort Desk/Floor Mats for House Sink Office (Black)',NULL,'B09CYDRFWQ','https://m.media-amazon.com/images/I/71nVT-klNdL._AC_UL320_.jpg',12899,4.4,'$15.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/KitchenClouds-Kitchen-Cushioned-Waterproof-Standing/dp/B09CYDRFWQ/ref=sr_1_35?keywords=kitchen&qid=1703020319&sr=8-35',43,'2023-12-19 15:12:00.836109-06','2023-12-19 15:12:00.836109-06','www.amazon.com'),
+ (3206,'Umite Chef Silicone Kitchen Cooking Utensil Set, 43 pcs Spatula Set with Stainless Steel Handle, Non-stick Heat Resistant - Best Cookware Set-(Khaki)',NULL,'B096NRHF4D','https://m.media-amazon.com/images/I/61wuDX+nqaL._AC_UL320_.jpg',2459,4.6,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Umite-Chef-Silicone-Non-stick-Resistant/dp/B096NRHF4D/ref=sr_1_36?keywords=kitchen&qid=1703020319&sr=8-36',43,'2023-12-19 15:12:00.844228-06','2023-12-19 15:12:00.844228-06','www.amazon.com'),
+ (3207,'Meat Chopper for Hamburger, Premium Heat Resistant Masher and Smasher for Ground Beef, Ground Turkey and More, Nylon Ground Beef Chopper Tool and Meat Fork, Non Stick Mix Chopper',NULL,'B08JKXDFQ9','https://m.media-amazon.com/images/I/61qZUr2m6UL._AC_UL320_.jpg',8887,4.7,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Chopper-Hamburger-Premium-Resistant-Smasher/dp/B08JKXDFQ9/ref=sr_1_37?keywords=kitchen&qid=1703020319&sr=8-37',43,'2023-12-19 15:12:00.853381-06','2023-12-19 15:12:00.853381-06','www.amazon.com'),
+ (3208,'AUOON Clip On Strainer Silicone for All Pots and Pans, Pasta Strainer Clip on Food Strainer for Meat Vegetables Fruit Silicone Kitchen Colander',NULL,'B0775GR18G','https://m.media-amazon.com/images/I/61rEjqHxCXL._AC_UL320_.jpg',9120,4.5,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Strainer-Spaghetti-Silicone-Colander-Approved/dp/B0775GR18G/ref=sr_1_38?keywords=kitchen&qid=1703020319&sr=8-38',43,'2023-12-19 15:12:00.861263-06','2023-12-19 15:12:00.861263-06','www.amazon.com'),
+ (3209,'PRAKI Airtight Food Storage Container Set, 16 Pcs BPA Free Plastic Dry Food Canisters for Kitchen Pantry Organization and Storage Ideal for Cereal, Flour & Sugar - Labels, Marker(Black)',NULL,'B08TWBX7KT','https://m.media-amazon.com/images/I/91VyrAJPgkL._AC_UL320_.jpg',6921,4.7,'$24.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PRAKI-Airtight-Food-Storage-Container/dp/B08TWBX7KT/ref=sr_1_39?keywords=kitchen&qid=1703020319&sr=8-39',43,'2023-12-19 15:12:00.870193-06','2023-12-19 15:12:00.870193-06','www.amazon.com'),
+ (3210,'Homaxy 100% Cotton Terry Kitchen Towels(Black, 13 x 28 inches), Checkered Designed, Soft and Super Absorbent Dish Towels, 4 Pack',NULL,'B08R6VYDSP','https://m.media-amazon.com/images/I/716ccrKz9BL._AC_UL320_.jpg',4426,4.5,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Homaxy-Kitchen-Checkered-Designed-Absorbent/dp/B08R6VYDSP/ref=sr_1_40?keywords=kitchen&qid=1703020319&sr=8-40',43,'2023-12-19 15:12:00.878599-06','2023-12-19 15:12:00.878599-06','www.amazon.com'),
+ (3211,'KOCWELL Bag Organizer and Plastic Wrap Dispenser with Cutter, 6 In 1 Bamboo Foil and Plastic Wrap Organizer for Kitchen Drawer, Food Storage Bag Organizer for Gallon,Quart,Sandwich,Snack',NULL,'B0B1ZLVFKJ','https://m.media-amazon.com/images/I/71GjE5Xq7qL._AC_UL320_.jpg',786,4.5,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/KOCWELL-Ziplock-Organizer-Dispenser-Sandwich/dp/B0B1ZLVFKJ/ref=sr_1_41?keywords=kitchen&qid=1703020319&sr=8-41',43,'2023-12-19 15:12:00.887144-06','2023-12-19 15:12:00.887144-06','www.amazon.com'),
+ (3197,'KEGOUU Oven Mitts and Pot Holders 6pcs Set, Kitchen Oven Glove High Heat Resistant 500 Degree Extra Long Oven Mitts and Potholder with Non-Slip Silicone Surface for Cooking (Grey)',NULL,'B085VQDL5T','https://m.media-amazon.com/images/I/812+0savvKL._AC_UL320_.jpg',9314,4.7,'$17.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NTQwNTc4MTAxNDQzNzE3OjE3MDMwMjAzMTk6c3BfbXRmOjIwMDE3MTU4ODUyOTE5ODo6MDo6&url=%2FKEGOUU-Resistant-Potholder-Non-Slip-Silicone%2Fdp%2FB085VQDL5T%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020319%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:00.771952-06','2023-12-19 15:12:00.894168-06','www.amazon.com'),
+ (3212,'Silicone Utensil Rest with Drip Pad for Multiple Utensils, Heat-Resistant, BPA-Free Spoon Rest & Spoon Holder for Stove Top, Kitchen Utensil Holder for Spoons, Ladles, Tongs & More - by Zulay',NULL,'B07PVBS863','https://m.media-amazon.com/images/I/71X6sn0-cNL._AC_UL320_.jpg',36372,4.7,'$7.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Silicone-Utensil-Rest-Multiple-Heat-Resistant/dp/B07PVBS863/ref=sr_1_43?keywords=kitchen&qid=1703020319&sr=8-43',43,'2023-12-19 15:12:00.902988-06','2023-12-19 15:12:00.902988-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3213,'Rubbermaid Microfiber Reveal Spray Mop Floor Cleaning Kit with 3 Microfiber Wet Pads, 1 Solution Refillable Bottles for Wet & Dry Use, Washable & Reusable Pads, Cordless, for All Floor Types',NULL,'B0CK552X5T','https://m.media-amazon.com/images/I/519DZsv+P7L._AC_UL320_.jpg',12312,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rubbermaid-Microfiber-Cleaning-Solution-Refillable/dp/B0CK552X5T/ref=sr_1_44?keywords=kitchen&qid=1703020319&sr=8-44',43,'2023-12-19 15:12:00.910676-06','2023-12-19 15:12:00.910676-06','www.amazon.com'),
+ (3214,'Under Cabinet Lights,40 LED Rechargeable Battery Operated Motion Sensor Light Indoor, 2 Pack Magnetic Dimmable Closet Lights, Wireless Under Counter Lights for Kitchen, Stairs (White Light)',NULL,'B0BDF8CVBN','https://m.media-amazon.com/images/I/61Yz671PUuL._AC_UL320_.jpg',6105,4.4,'$24.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rechargeable-Operated-Magnetic-Dimmable-Wireless/dp/B0BDF8CVBN/ref=sr_1_45?keywords=kitchen&qid=1703020319&sr=8-45',43,'2023-12-19 15:12:00.919686-06','2023-12-19 15:12:00.919686-06','www.amazon.com'),
+ (3215,'Electric Salt and Pepper Grinder Set (2 Pack), Rechargeable - No Battery Needed - Automatic Salt Pepper Mill Grinder, Adjustable Coarseness, LED Light, One-Hand Operation for Kitchen BBQ',NULL,'B0BQYVNKRV','https://m.media-amazon.com/images/I/81y8zGlpJWL._AC_UL320_.jpg',2339,4.7,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Electric-Salt-Pepper-Grinder-Rechargeable/dp/B0BQYVNKRV/ref=sr_1_46?keywords=kitchen&qid=1703020319&sr=8-46',43,'2023-12-19 15:12:00.927585-06','2023-12-19 15:12:00.927585-06','www.amazon.com'),
+ (3216,'KIMIUP Kitchen Cutting Board (Set of 3),Professional Chopping Boards Sets,Dishwasher Safe Cutting Boards With Juice Grooves & Carrying Handle & No BPA',NULL,'B08PB36KQ8','https://m.media-amazon.com/images/I/81R6Gd-mtzL._AC_UL320_.jpg',5694,4.7,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/KIMIUP-Professional-Chopping-Dishwasher-Carrying/dp/B08PB36KQ8/ref=sr_1_47?keywords=kitchen&qid=1703020319&sr=8-47',43,'2023-12-19 15:12:00.935169-06','2023-12-19 15:12:00.935169-06','www.amazon.com'),
+ (3301,'Mental Health Journal: Daily Check-In: 70 Days of Reflection Space to Track Your Moods, Intentions, and Well-Being',NULL,'B0B92D3DBM','https://m.media-amazon.com/images/I/71R5lJXXI0L._AC_UL320_.jpg',73,4.5,'$10.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mental-Health-Journal-Check-Reflection/dp/B0B92D3DBM/ref=sr_1_16?keywords=health&qid=1703020336&sr=8-16',44,'2023-12-19 15:12:17.694718-06','2023-12-19 15:12:17.694718-06','www.amazon.com'),
+ (3217,'24 Pack Airtight Food Storage Container Set - BPA Free Clear Plastic Kitchen and Pantry Organization Canisters with Durable Lids for Cereal, Dry Food Flour & Sugar - Labels, Marker & Spoon Set',NULL,'B091V74W4N','https://m.media-amazon.com/images/I/811MHr1Pz4L._AC_UL320_.jpg',12057,4.7,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pack-Airtight-Food-Storage-Container/dp/B091V74W4N/ref=sr_1_48?keywords=kitchen&qid=1703020319&sr=8-48',43,'2023-12-19 15:12:00.94442-06','2023-12-19 15:12:00.94442-06','www.amazon.com'),
+ (3218,'Hoenart 4 Pack Magnetic Spice Rack for Refrigerator, Moveable Magnetic Spice Organizer, Black Metal Strong Magnetic Shelf for Fridge and Microwave Oven, Space Saving for Kitchen',NULL,'B0C9QKV33P','https://m.media-amazon.com/images/I/81ls2I8LEUL._AC_UL320_.jpg',139,4.8,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hoenart-Magnetic-Refrigerator-Organizer-Microwave/dp/B0C9QKV33P/ref=sr_1_49?keywords=kitchen&qid=1703020319&sr=8-49',43,'2023-12-19 15:12:00.953394-06','2023-12-19 15:12:00.953394-06','www.amazon.com'),
+ (3219,'4-in-1 longzon [4 stage] Knife Sharpener with a Pair of Cut-Resistant Glove, Original Premium Polish Blades, Best Kitchen Knife Sharpener Really Works for Ceramic and Steel Knives, Scissors.',NULL,'B08FWNCNH9','https://m.media-amazon.com/images/I/71EhinXcQoL._AC_UL320_.jpg',27557,4.3,'$13.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/longzon-Sharpener-Cut-Resistant-Original-Scissors/dp/B08FWNCNH9/ref=sr_1_50?keywords=kitchen&qid=1703020319&sr=8-50',43,'2023-12-19 15:12:00.962765-06','2023-12-19 15:12:00.962765-06','www.amazon.com'),
+ (3220,'REALINN Under Sink Organizer, Pull Out Cabinet Organizer 2 Tier Slide Out Sink Shelf Cabinet Storage Shelves, Under Sink Storage for Kitchen Bathroom Cabinet',NULL,'B0B6TK767D','https://m.media-amazon.com/images/I/81Pzdi+8KWL._AC_UL320_.jpg',2308,4.4,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/REALINN-Organizer-Cabinet-Storage-Bathroom/dp/B0B6TK767D/ref=sr_1_51?keywords=kitchen&qid=1703020319&sr=8-51',43,'2023-12-19 15:12:00.971549-06','2023-12-19 15:12:00.971549-06','www.amazon.com'),
+ (3221,'Sevenblue 2 Pack Under Sink Organizers and Storage, 2 Tier Sliding Bathroom organizer,Multi-Use Under Kitchen Cabinet Storage Shelf (Black 2Pack)',NULL,'B0BQHPHS5W','https://m.media-amazon.com/images/I/715W1ep-DqL._AC_UL320_.jpg',1472,4.6,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SevenBlue-Organizers-Bathroom-organizer-Multi-Use/dp/B0BQHPHS5W/ref=sr_1_52?keywords=kitchen&qid=1703020319&sr=8-52',43,'2023-12-19 15:12:00.979544-06','2023-12-19 15:12:00.979544-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3222,'HENCKELS Premium Quality 15-Piece Knife Set with Block, Razor-Sharp, German Engineered Knife Informed by over 100 Years of Masterful Knife Making, Lightweight and Strong, Dishwasher Safe',NULL,'B00GHX5HGG','https://m.media-amazon.com/images/I/71FtjejRbvL._AC_UL320_.jpg',14709,4.6,'$129.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HENCKELS-Razor-Sharp-Engineered-Lightweight-Dishwasher/dp/B00GHX5HGG/ref=sr_1_53?keywords=kitchen&qid=1703020319&sr=8-53',43,'2023-12-19 15:12:00.987774-06','2023-12-19 15:12:00.987774-06','www.amazon.com'),
+ (3223,'Home Hero 54 Pcs Kitchen Utensils Set - Cooking Utensils Set with Spatula - First Home Essentials Utensil Sets - Household Essentials - Kitchen Gadgets & Kitchen Gift (54 Pcs Set - Stainless Steel)',NULL,'B077BG4T9C','https://m.media-amazon.com/images/I/81VNMj39EwL._AC_UL320_.jpg',5536,4.4,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Home-Hero-Stainless-Utensil-Set/dp/B077BG4T9C/ref=sr_1_54?keywords=kitchen&qid=1703020319&sr=8-54',43,'2023-12-19 15:12:00.996055-06','2023-12-19 15:12:00.996055-06','www.amazon.com'),
+ (3224,'Vegetable Chopper, Pro Onion Chopper, Multifunctional 13 in 1 Food Chopper, Kitchen Vegetable Slicer Dicer Cutter,Veggie Chopper With 8 Blades,Carrot and Garlic Chopper With Container…',NULL,'B09YH5CPQP','https://m.media-amazon.com/images/I/81tV-nZg9-L._AC_UL320_.jpg',16888,4.3,'$23.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vegetable-Chopper-Multifunctional-Kitchen-Container/dp/B09YH5CPQP/ref=sr_1_55?keywords=kitchen&qid=1703020319&sr=8-55',43,'2023-12-19 15:12:01.004914-06','2023-12-19 15:12:01.004914-06','www.amazon.com'),
+ (3225,'BLACK+DECKER PowerCrush Multi-Function Blender with 6-Cup Glass Jar, 4 Speed Settings, Silver',NULL,'B07RQVL8D5','https://m.media-amazon.com/images/I/711rlNbZmkL._AC_UL320_.jpg',6338,4.4,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BLACK-DECKER-BL1230SG-PowerCrush-Multi-Function/dp/B07RQVL8D5/ref=sr_1_57?keywords=kitchen&qid=1703020319&sr=8-57',43,'2023-12-19 15:12:01.013517-06','2023-12-19 15:12:01.013517-06','www.amazon.com'),
+ (3226,'Vegetable , Food Chopper, Pro 12 in1 Multifunctional Onion/Veggie Chopper With Container, Vegetable Dicer Cutter,Mandoline Slicer,Salad,Garlic Chopper (12 in1)',NULL,'B0CB7QR48D','https://m.media-amazon.com/images/I/81BP24KakHL._AC_UL320_.jpg',1294,4.4,'$21.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vegetable-Chopper-Multifunctional-Container-Mandoline/dp/B0CB7QR48D/ref=sr_1_58?keywords=kitchen&qid=1703020319&sr=8-58',43,'2023-12-19 15:12:01.022728-06','2023-12-19 15:12:01.022728-06','www.amazon.com'),
+ (3608,'Hanes',NULL,'B0BKLPPXBS','https://m.media-amazon.com/images/I/91dfC5eeR9L._AC_UL320_.jpg',287,4.5,'$10.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Originals-Tri-Blend-Athletic-Heather/dp/B0BKLPPXBS/ref=sr_1_92?keywords=men%27s+clothing&qid=1703020378&sr=8-92',46,'2023-12-19 15:12:59.506297-06','2023-12-19 15:12:59.506297-06','www.amazon.com'),
+ (3228,'T-fal Ultimate EZ Clean Stainless Steel Deep Fryer with Basket 3.5 Liter Oil and 2.6 Pound Food Capacity 1700 Watts Oil Filtration, Temp Control, Digital Timer, Dishwasher Safe Parts Stainless Steel',NULL,'B00NQ7QFGM','https://m.media-amazon.com/images/I/713j2j371bL._AC_UL320_.jpg',16134,4.6,'$90.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/T-fal-Ultimate-Stainless-Filtration-Dishwasher/dp/B00NQ7QFGM/ref=sr_1_60?keywords=kitchen&qid=1703020319&sr=8-60',43,'2023-12-19 15:12:01.041492-06','2023-12-19 15:12:01.041492-06','www.amazon.com'),
+ (4555,'PAVILIA Travel Blanket Pillow in Soft Bag with Pockets, Airplane Blanket Set, Plane Blanket Compact Packable, Flight Essentials Car Pillow, Travelers Accessories Gifts, Luggage Strap, Turquoise',NULL,'B0C6BJL66R','https://m.media-amazon.com/images/I/915Un5Kn5dL._AC_UL320_.jpg',138,4.8,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfYXRmX25leHQ6MjAwMTcyODg1MjAzNzk4OjowOjo&url=%2FPAVILIA-Essentials-Travelers-Accessories-Turquoise%2Fdp%2FB0C6BJL66R%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',57,'2023-12-19 15:18:07.880074-06','2023-12-19 15:18:07.880074-06','www.amazon.com'),
+ (3229,'Collive Boho Anti Fatigue Kitchen Mats Sets 2 Piece Non Skid Kitchen Mats for Floor Cushioned Kitchen Rugs and Mats Waterproof Ergonomic Comfort Standing Mat Runner for Kitchen,Home,Office,Laundry',NULL,'B0CGTZRSL8','https://m.media-amazon.com/images/I/811osHjw5CL._AC_UL320_.jpg',38,4.3,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfYXRmX25leHQ6MzAwMDkyNDMxNTMxNTAyOjowOjo&url=%2FCollive-Cushioned-Waterproof-Ergonomic-Standing%2Fdp%2FB0CGTZRSL8%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',43,'2023-12-19 15:12:07.467414-06','2023-12-19 15:12:07.467414-06','www.amazon.com'),
+ (3230,'Breadman 2-Pound Bread Maker, Stainless Steel, BK1200SS',NULL,'B0C5NYCT51','https://m.media-amazon.com/images/I/71CIwOWF0cL._AC_UL320_.jpg',1355,4.2,'$179.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfYXRmX25leHQ6MzAwMDkwODQ4ODM5NzAyOjowOjo&url=%2FBreadman-2-Pound-Bread-Stainless-BK1200SS%2Fdp%2FB0C5NYCT51%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',43,'2023-12-19 15:12:07.491316-06','2023-12-19 15:12:07.491316-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3231,'Sunnecko Heavy Duty Kitchen Scissors - Stainless Steel Kitchen Shears,Ultra Sharp Micro Serrated Poultry Shears,Cooking Scissors for Meat,Fish,Chicken,Vegetable,Open Jars&Nut Cracker,Dishwasher Safe',NULL,'B0BN1M6FHZ','https://m.media-amazon.com/images/I/61Sw4O74-+L._AC_UL320_.jpg',214,4.6,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfYXRmX25leHQ6MzAwMDcyMzE5ODg4MDAyOjowOjo&url=%2FSunnecko-Heavy-Duty-Kitchen-Scissors%2Fdp%2FB0BN1M6FHZ%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',43,'2023-12-19 15:12:07.500235-06','2023-12-19 15:12:07.500235-06','www.amazon.com'),
+ (3232,'EUNA Kitchen Knife Set With Block, 7 Pieces Knife Block Set with Wooden Handle, Japanese Stainless Steel Chef Knife Set Professional Cooking Knive, Silver',NULL,'B0B9GWQN4W','https://m.media-amazon.com/images/I/815VLWpQGlL._AC_UL320_.jpg',29,4.7,'$127.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfYXRmX25leHQ6MzAwMDk0NDQyNTY4OTAyOjowOjo&url=%2FEUNA-Kitchen-Japanese-Stainless-Professional%2Fdp%2FB0B9GWQN4W%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',43,'2023-12-19 15:12:07.508727-06','2023-12-19 15:12:07.508727-06','www.amazon.com'),
+ (3233,'Refrigerator Deodorizer,Lasts for 10 Years,Refrigerator Odor Eliminator,Fridge Deodorizer,Beats Baking Soda and Bamboo Charcoal Air Purifying Bags',NULL,'B09VZ11WHK','https://m.media-amazon.com/images/I/71Yk6yF+UsL._AC_UL320_.jpg',3175,4.4,'$22.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Refrigerator-Deodorizer-Eliminator-Charcoal-Purifying/dp/B09VZ11WHK/ref=sr_1_53?keywords=kitchen&qid=1703020326&sr=8-53',43,'2023-12-19 15:12:07.51736-06','2023-12-19 15:12:07.51736-06','www.amazon.com'),
+ (3234,'Mattitude Kitchen Mat [2 PCS] Cushioned Anti-Fatigue Non-Skid Waterproof Rugs Ergonomic Comfort Standing Mat for Kitchen, Floor, Office, Sink, Laundry, Black and Gray',NULL,'B09B6TZ5J2','https://m.media-amazon.com/images/I/810fh1ps0PL._AC_UL320_.jpg',18345,4.2,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mattitude-Cushioned-Anti-Fatigue-Waterproof-Ergonomic/dp/B09B6TZ5J2/ref=sr_1_54?keywords=kitchen&qid=1703020326&sr=8-54',43,'2023-12-19 15:12:07.528545-06','2023-12-19 15:12:07.528545-06','www.amazon.com'),
+ (3235,'Extra Large Cutting Boards, Plastic Cutting Boards for Kitchen (Set of 3), Dark Grey',NULL,'B09XQR4HTH','https://m.media-amazon.com/images/I/812M9V2sbtL._AC_UL320_.jpg',2564,4.7,'$26.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Extra-Cutting-Boards-Plastic-Kitchen/dp/B09XQR4HTH/ref=sr_1_55?keywords=kitchen&qid=1703020326&sr=8-55',43,'2023-12-19 15:12:07.537841-06','2023-12-19 15:12:07.537841-06','www.amazon.com'),
+ (3236,'Skroam 36 Pack Food Storage Containers with lids (18 Airtight Kitchen Storage Containers & 18 Lids), Plastic BPA-Free Meal Prep Container for Pantry Organizers and Storage with Free Labels & Marker',NULL,'B0C5M9W2G5','https://m.media-amazon.com/images/I/81mYgk0KBEL._AC_UL320_.jpg',583,4.4,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skroam-Containers-Airtight-Container-Organizers/dp/B0C5M9W2G5/ref=sr_1_56?keywords=kitchen&qid=1703020326&sr=8-56',43,'2023-12-19 15:12:07.546556-06','2023-12-19 15:12:07.546556-06','www.amazon.com'),
+ (3237,'LANE LINEN Kitchen Towels Set - Pack of 6 Cotton Dish Towels for Drying Dishes, 18”x 28”, Kitchen Hand Towels, Absorbent Tea Towels, Dish Towels for Kitchen, Quick Drying Kitchen Towel Set - Olive',NULL,'B0BN5PBY7G','https://m.media-amazon.com/images/I/91l1gmc0wPL._AC_UL320_.jpg',2184,4.6,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LANE-LINEN-Kitchen-Towels-Set/dp/B0BN5PBY7G/ref=sr_1_57?keywords=kitchen&qid=1703020326&sr=8-57',43,'2023-12-19 15:12:07.558641-06','2023-12-19 15:12:07.558641-06','www.amazon.com'),
+ (3238,'TEMI Pretend Food Kitchen Toys for Kids Ages 4-8, Kitchen Set for Toddlers 1-3, Play Kitchen Accessories w/Real Sounds Light, for Boys, Girls',NULL,'B0B9N6S6DN','https://m.media-amazon.com/images/I/714VCiExu7L._AC_UL320_.jpg',652,3.4,'$79.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TEMI-Play-Kitchen-Girls-Pretend/dp/B0B9N6S6DN/ref=sr_1_58?keywords=kitchen&qid=1703020326&sr=8-58',43,'2023-12-19 15:12:07.570198-06','2023-12-19 15:12:07.570198-06','www.amazon.com'),
+ (3239,'Homergy Anti Fatigue Kitchen Mats for Floor 2 PCS, Memory Foam Cushioned Rugs, Comfort Standing Desk Mats for Office, Home, Laundry Room, Waterproof & Ergonomic, 17.3×30.3 & 17.3×59, Fabric Grey',NULL,'B0BMM1FDK4','https://m.media-amazon.com/images/I/91xf7opfvOL._AC_UL320_.jpg',4355,4.4,'$27.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjIwMDEyNzAzMDY4NjA5ODo6MDo6&url=%2FHomergy-Cushioned-Waterproof-Ergonomic-17-3x30-3%2Fdp%2FB0BMM1FDK4%2Fref%3Dsr_1_59_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-59-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.577962-06','2023-12-19 15:12:07.577962-06','www.amazon.com'),
+ (3240,'SZFIXEZ Electric Spin Scrubber with 3 Speeds & LED Display, Shower Scrubber for Cleaning, Cordless Cleaning Brush with Adjustable & Detachable, 9 Replaceable Brush Heads for Tile Tub Bathroom TD-8136',NULL,'B0CBRGTZ51','https://m.media-amazon.com/images/I/81o0a8o-VqL._AC_UL320_.jpg',34,4.3,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjMwMDA2NDg0ODUxNDcwMjo6MDo6&url=%2FSZFIXEZ-Adjustable-Detachable-Replaceable-TD-8136%2Fdp%2FB0CBRGTZ51%2Fref%3Dsr_1_60_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-60-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.587426-06','2023-12-19 15:12:07.587426-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3241,'kelamayi Broom and Dustpan Set for Home, Office, Indoor&Outdoor Sweeping, Stand Up Broom and Dustpan (Black&Gray)',NULL,'B0BRK83JY7','https://m.media-amazon.com/images/I/61F-EPvYxLL._AC_UL320_.jpg',25692,4.3,'$21.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjIwMDE1MjE4Njg3ODY5ODo6MDo6&url=%2Fkelamayi-Broom-Dustpan-Office-Stand%2Fdp%2FB0BRK83JY7%2Fref%3Dsr_1_61_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.599705-06','2023-12-19 15:12:07.599705-06','www.amazon.com'),
+ (3242,'Pipishell Bamboo Expandable Drawer Organizer for Utensils Holder, Adjustable Cutlery Tray, Wood Drawer Dividers Organizer for Silverware, Flatware, Knives in Kitchen, Bedroom, Living Room',NULL,'B07SRV3SN8','https://m.media-amazon.com/images/I/71GOS3L3BML._AC_UL320_.jpg',38152,4.7,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjIwMDA2MzgxMDIxMzE5ODo6MDo6&url=%2FExpandable-Organizer-Adjustable-Silverware-Pipishell%2Fdp%2FB07SRV3SN8%2Fref%3Dsr_1_62_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-62-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.611538-06','2023-12-19 15:12:07.611538-06','www.amazon.com'),
+ (3243,'Plastic Cutting Coards for Kitchen, 3-Piece Large Cutting Board Set Dishwasher Safe Chopping Boards with Non-slip Feet and Juice Grooves, Kikcoin',NULL,'B0CCTNBJYD','https://m.media-amazon.com/images/I/81t0h7wskjL._AC_UL320_.jpg',2697,4.7,'$17.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plastic-Dishwasher-Chopping-Non-slip-Kikcoin/dp/B0CCTNBJYD/ref=sr_1_63?keywords=kitchen&qid=1703020326&sr=8-63',43,'2023-12-19 15:12:07.621422-06','2023-12-19 15:12:07.621422-06','www.amazon.com'),
+ (3244,'Step2 Modern Metro Kitchen Set for Kids – Includes 30+ Toy Kitchen Accessories, Interactive Features for Pretend Play – Indoor/Outdoor Toddler Playset – Dimensions 44.75" H x 46.5" W x 13.5" D',NULL,'B073FWDJ5B','https://m.media-amazon.com/images/I/71juHyi1E1S._AC_UL320_.jpg',510,4.8,'$189.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Step2-Modern-Metro-Kitchen-Play/dp/B073FWDJ5B/ref=sr_1_64?keywords=kitchen&qid=1703020326&sr=8-64',43,'2023-12-19 15:12:07.630263-06','2023-12-19 15:12:07.630263-06','www.amazon.com'),
+ (3245,'Etekcity Food Scale, Digital Kitchen Scale, 304 Stainless Steel, Weight in Grams and Ounces for Baking, Cooking, and Meal Prep, LCD Display, Medium',NULL,'B0113UZJE2','https://m.media-amazon.com/images/I/7157x4p8zTL._AC_UL320_.jpg',149935,4.6,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Etekcity-Multifunction-Stainless-Batteries-Included/dp/B0113UZJE2/ref=sr_1_65?keywords=kitchen&qid=1703020326&sr=8-65',43,'2023-12-19 15:12:07.639131-06','2023-12-19 15:12:07.639131-06','www.amazon.com'),
+ (3246,'24-Piece Black Silverware Set with Steak Knives, Black Flatware Set for 4, Food-Grade Stainless Steel Tableware Cutlery Set, Mirror Finished Utensil Sets for Home Restaurant',NULL,'B0BYX1XT81','https://m.media-amazon.com/images/I/71vZ7TGZW1L._AC_UL320_.jpg',1189,4.6,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Silverware-Food-Grade-Stainless-Tableware-Restaurant/dp/B0BYX1XT81/ref=sr_1_66?keywords=kitchen&qid=1703020326&sr=8-66',43,'2023-12-19 15:12:07.651274-06','2023-12-19 15:12:07.651274-06','www.amazon.com'),
+ (3247,'WEZVIX Non-Skid Kitchen Rugs and Mats Waterproof, Anti Fatigue Mat 2 PCS, 1/2 Inch Thick Floor Mat, Ergonomic Comfort Foam Standing for Floor, Office, Sink, Laundry - Grey',NULL,'B0BRZRJRY2','https://m.media-amazon.com/images/I/61yoCOOHOAL._AC_UL320_.jpg',340,4.5,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjMwMDAyMzM0MjM5MzIwMjo6MDo6&url=%2FWEZVIX-Non-Skid-Waterproof-Ergonomic-Standing%2Fdp%2FB0BRZRJRY2%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.661606-06','2023-12-19 15:12:07.661606-06','www.amazon.com'),
+ (3248,'ComfiLife Anti Fatigue Floor Mat – 3/4 Inch Thick Perfect Kitchen Mat, Standing Desk Mat – Comfort at Home, Office, Garage – Durable – Stain Resistant – Non-Slip Bottom (20" x 32", Black)',NULL,'B0797Q5HL7','https://m.media-amazon.com/images/I/81GvNnbHEhL._AC_UL320_.jpg',34744,4.8,'$45.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjIwMDA5NDQ2NjQxNTA5ODo6MDo6&url=%2FComfiLife-Anti-Fatigue-Floor-Mat%2Fdp%2FB0797Q5HL7%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.671865-06','2023-12-19 15:12:07.671865-06','www.amazon.com'),
+ (3249,'IRONCK Rolling Kitchen Island Table on Wheels with Drop Leaf, Storage Cabinet, Drawer, Spice Rack, Towel Rack, Kitchen Cart, White',NULL,'B09P3KT1MK','https://m.media-amazon.com/images/I/711YwBcNOZL._AC_UL320_.jpg',669,4.4,'$159.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjMwMDA2MDQyNjM2NjUwMjo6MDo6&url=%2FIRONCK-Kitchen-Storage-Rolling-Cabinet%2Fdp%2FB09P3KT1MK%2Fref%3Dsr_1_69_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-69-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.686352-06','2023-12-19 15:12:07.686352-06','www.amazon.com'),
+ (3250,'HOSHANHO Kitchen Knife Set with Block 18-Piece, Super Sharp German High Carbon Stainless Steel Chef Knife Set, Professional Cutlery Knife Set with Sharpener',NULL,'B0CD7FMZ67','https://m.media-amazon.com/images/I/81us0U61d-L._AC_UL320_.jpg',27,4.7,'$189.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NDAxNzUxOTY4OTY3NzE3OjE3MDMwMjAzMjY6c3BfbXRmOjMwMDEwMDAyMDk0NjUwMjo6MDo6&url=%2FHOSHANHO-Knife-Set-Stainless-Professional%2Fdp%2FB0CD7FMZ67%2Fref%3Dsr_1_70_sspa%3Fkeywords%3Dkitchen%26qid%3D1703020326%26sr%3D8-70-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',43,'2023-12-19 15:12:07.696833-06','2023-12-19 15:12:07.696833-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3251,'Joined Cheese Grater with Container - Box Grater Cheese Shredder Lemon Zester - Cheese Grater with Handle - Graters for Kitchen Stainless Steel Food Grater - Garlic Mincer Tool and Vegetable Peeler',NULL,'B0BVPRC8B6','https://m.media-amazon.com/images/I/81gcyKUxYFL._AC_UL320_.jpg',355,4.7,'$15.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Joined-Cheese-Grater-Container-Stainless/dp/B0BVPRC8B6/ref=sr_1_71?keywords=kitchen&qid=1703020326&sr=8-71',43,'2023-12-19 15:12:07.706619-06','2023-12-19 15:12:07.706619-06','www.amazon.com'),
+ (3252,'Rubbermaid Brilliance BPA Free Food Storage Containers with Lids, Airtight, for Lunch, Meal Prep, and Leftovers, Set of 22',NULL,'B07X64Z8RM','https://m.media-amazon.com/images/I/91rRZWaom+L._AC_UL320_.jpg',80248,4.7,'$113.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rubbermaid-2108389-Brilliance-44-Piece-Container/dp/B07X64Z8RM/ref=sr_1_72?keywords=kitchen&qid=1703020326&sr=8-72',43,'2023-12-19 15:12:07.715693-06','2023-12-19 15:12:07.715693-06','www.amazon.com'),
+ (3253,'OXO Good Grips Stainless Steel Scraper & Chopper,Silver/Black',NULL,'B00004OCNJ','https://m.media-amazon.com/images/I/71gLUMMtFmL._AC_UL320_.jpg',15723,4.8,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OXO-Multi-purpose-Stainless-Scraper-Chopper/dp/B00004OCNJ/ref=sr_1_73?keywords=kitchen&qid=1703020326&sr=8-73',43,'2023-12-19 15:12:07.727735-06','2023-12-19 15:12:07.727735-06','www.amazon.com'),
+ (3416,'GUM - 6504R6 Soft-Picks Advanced Dental Picks, 60 Count (Pack of 6)',NULL,'B07B91ZNT5','https://m.media-amazon.com/images/I/71dbbThsRFL._AC_UL320_.jpg',706,4.7,'$21.54','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sunstar-6504R-Soft-Picks-Advanced-Pack/dp/B07B91ZNT5/ref=sr_1_34?keywords=dental&qid=1703020352&sr=8-34',45,'2023-12-19 15:12:33.317288-06','2023-12-19 15:12:33.317288-06','www.amazon.com'),
+ (3254,'COOK WITH COLOR Prep Bowls - Wide Mixing Bowls Nesting Plastic Meal Prep Bowl Set with Lids - Small Bowls Food Containers in Multiple Sizes (Blue Ombre)',NULL,'B08L6XRCFS','https://m.media-amazon.com/images/I/51JeHs8rEGL._AC_UL320_.jpg',5223,4.6,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cook-Color-Mixing-Bowls-Nesting/dp/B08L6XRCFS/ref=sr_1_74?keywords=kitchen&qid=1703020326&sr=8-74',43,'2023-12-19 15:12:07.739913-06','2023-12-19 15:12:07.739913-06','www.amazon.com'),
+ (3255,'Amazon Basics Flextra Tall Kitchen Drawstring Trash Bags, Fresh Scent, 13 Gallon, 90 Count',NULL,'B092VQDGWL','https://m.media-amazon.com/images/I/711F2roOZ3L._AC_UL320_.jpg',12662,4.5,'$13.36','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Basics-Flextra-Kitchen-Drawstring/dp/B092VQDGWL/ref=sr_1_75?keywords=kitchen&qid=1703020326&sr=8-75',43,'2023-12-19 15:12:07.748918-06','2023-12-19 15:12:07.748918-06','www.amazon.com'),
+ (3256,'Umite Chef Kitchen Cooking Utensils Set, 33 pcs Non-Stick Silicone Cooking Kitchen Utensils Spatula Set with Holder, Wooden Handle Silicone Kitchen Gadgets Utensil Set (Khaki)',NULL,'B08573DQ39','https://m.media-amazon.com/images/I/71fk8luIIaL._AC_UL320_.jpg',22637,4.5,'$23.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Umite-Chef-Utensils-Non-stick-Resistant/dp/B08573DQ39/ref=sr_1_76?keywords=kitchen&qid=1703020326&sr=8-76',43,'2023-12-19 15:12:07.761049-06','2023-12-19 15:12:07.761049-06','www.amazon.com'),
+ (3257,'2 Pcs Oven Mitts for Kitchen Heat Resistant Oven Gloves, Soft Cotton Lining, Anti-Slip Silicone Stripe Oven Mitts Heat Resistant Oven Mits, Kitchen Mitt Pair Protect Hands, Cooking Baking BBQ Gloves',NULL,'B0CDWLXC22','https://m.media-amazon.com/images/I/719UqulabpL._AC_UL320_.jpg',52,4.3,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kitchen-Resistant-Anti-Slip-Silicone-Protect/dp/B0CDWLXC22/ref=sr_1_77?keywords=kitchen&qid=1703020326&sr=8-77',43,'2023-12-19 15:12:07.773301-06','2023-12-19 15:12:07.773301-06','www.amazon.com'),
+ (3258,'Infinitee Xclusives Premium Kitchen Towels – Pack of 3, 100% Cotton 15 x 25 Inches Absorbent Dish Towels - Terry Kitchen Dishcloth Towels - Grey Dish Cloth for Household Cleaning',NULL,'B0BX9PRWT1','https://m.media-amazon.com/images/I/71jhJ0LkQuL._AC_UL320_.jpg',5295,4.7,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Infinitee-Xclusives-Premium-Kitchen-Towels/dp/B0BX9PRWT1/ref=sr_1_78?keywords=kitchen&qid=1703020326&sr=8-78',43,'2023-12-19 15:12:07.782545-06','2023-12-19 15:12:07.782545-06','www.amazon.com'),
+ (3259,'Glad ForceFlex Tall Kitchen Drawstring Trash Bags, 13 Gallon Trash Bag, Gain Lavender with Febreze Freshness, 110 Count',NULL,'B09QDZM9N5','https://m.media-amazon.com/images/I/81Sd34rKtML._AC_UL320_.jpg',712,4.7,'$21.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Glad-ForceFlex-Drawstring-Lavender-Freshness/dp/B09QDZM9N5/ref=sr_1_79?keywords=kitchen&qid=1703020326&sr=8-79',43,'2023-12-19 15:12:07.792754-06','2023-12-19 15:12:07.792754-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3260,'Dealusy 4 Set Glass Cups with Lids and Straws 16 oz, Glasses Drinking Set, Iced Coffee Cup with Bamboo Lids, Drinking Glasses Tumbler with Straw and Lid, Glass Can Drinking Glassware, 2 Brushes',NULL,'B0CBQJ8KN8','https://m.media-amazon.com/images/I/719q3kfsQAL._AC_UL320_.jpg',385,4.6,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dealusy-Glasses-Drinking-Tumbler-Glassware/dp/B0CBQJ8KN8/ref=sr_1_80?keywords=kitchen&qid=1703020326&sr=8-80',43,'2023-12-19 15:12:07.801423-06','2023-12-19 15:12:07.801423-06','www.amazon.com'),
+ (3261,'Walfos Silicone Trivet Mats - 4 Heat Resistant Pot Holders, Multipurpose Non-Slip Hot Pads for Kitchen Potholders, Hot Dishers, Jar Opener, Spoon Holder, Food Grade Silicone & BPA Free (Black)',NULL,'B08JLB2PQ2','https://m.media-amazon.com/images/I/71CAGFBE5hL._AC_UL320_.jpg',5292,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Walfos-Silicone-Trivet-Mats-Multipurpose/dp/B08JLB2PQ2/ref=sr_1_81?keywords=kitchen&qid=1703020326&sr=8-81',43,'2023-12-19 15:12:07.813898-06','2023-12-19 15:12:07.813898-06','www.amazon.com'),
+ (3262,'Copco KitchenAid All Purpose Kitchen Shears with Protective Sheath for Everyday use, Dishwasher Safe Stainless Steel Scissors with Comfort Grip, 8.72-Inch, Black',NULL,'B07PZF3QS3','https://m.media-amazon.com/images/I/51Byq+vTy1L._AC_UL320_.jpg',54672,4.8,'$8.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/KitchenAid-Protective-Dishwasher-Stainless-8-72-Inch/dp/B07PZF3QS3/ref=sr_1_82?keywords=kitchen&qid=1703020326&sr=8-82',43,'2023-12-19 15:12:07.823023-06','2023-12-19 15:12:07.823023-06','www.amazon.com'),
+ (3263,'Pyrex 3 Piece Glass Measuring Cup Set, Includes 1-Cup, 2-Cup, and 4-Cup Tempered Glass Liquid Measuring Cups, Dishwasher, Freezer, Microwave, and Preheated Oven Safe, Essential Kitchen Tools',NULL,'B00M2J7PCI','https://m.media-amazon.com/images/I/71ygLu2o0OL._AC_UL320_.jpg',56372,4.8,'$22.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pyrex-Measuring-Cups-3-Piece-Clear/dp/B00M2J7PCI/ref=sr_1_83?keywords=kitchen&qid=1703020326&sr=8-83',43,'2023-12-19 15:12:07.831607-06','2023-12-19 15:12:07.831607-06','www.amazon.com'),
+ (3505,'Champion',NULL,'B078GFYJKL','https://m.media-amazon.com/images/I/51IYUl2w5AL._AC_UL320_.jpg',66264,4.7,'$27.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Graphic-Powerblend-Fleece-Scarlet/dp/B078GFYJKL/ref=sr_1_5?keywords=men%27s+clothing&qid=1703020369&sr=8-5',46,'2023-12-19 15:12:50.805433-06','2023-12-19 15:12:50.805433-06','www.amazon.com'),
+ (3264,'Sakugi Dish Drying Rack - X-Large Stainless Steel Dish Rack for Kitchen Counter, Kitchen Organizers and Storage for Dishes, Bowls, Cutlery, Black',NULL,'B0CBS79SCD','https://m.media-amazon.com/images/I/819zf0AMM2L._AC_UL320_.jpg',1747,4.4,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sakugi-Dish-X-Large-Stainless-Kitchen-Kitchen-Organizers/dp/B0CBS79SCD/ref=sr_1_84?keywords=kitchen&qid=1703020326&sr=8-84',43,'2023-12-19 15:12:07.842594-06','2023-12-19 15:12:07.842594-06','www.amazon.com'),
+ (3265,'ROYAL CRAFT WOOD Wooden Cutting Boards for Kitchen Meal Prep & Serving - Bamboo Wood Serving Board Set with Deep Juice Groove Side Handles - Charcuterie & Chopping Butcher Block for Meat (3 Pcs)',NULL,'B0CJ2YTKSY','https://m.media-amazon.com/images/I/81Bf+stbPPL._AC_UL320_.jpg',27738,4.6,'$27.87','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ROYAL-CRAFT-WOOD-Cutting-Kitchen/dp/B0CJ2YTKSY/ref=sr_1_85?keywords=kitchen&qid=1703020326&sr=8-85',43,'2023-12-19 15:12:07.853414-06','2023-12-19 15:12:07.853414-06','www.amazon.com'),
+ (3266,'Kitchen Shears - QtoiKce Kitchen Scissors Heavy Duty Stainless Steel Food Shears for Cutting Meat, Fish, Poultry Shears Multipurpose Utility Scissors',NULL,'B0CKTKT59V','https://m.media-amazon.com/images/I/512fx2754mL._AC_UL320_.jpg',2,5.0,'$3.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kitchen-Shears-Scissors-Stainless-Multipurpose/dp/B0CKTKT59V/ref=sr_1_87?keywords=kitchen&qid=1703020326&sr=8-87',43,'2023-12-19 15:12:07.862716-06','2023-12-19 15:12:07.862716-06','www.amazon.com'),
+ (3267,'Meat Chopper, Hamburger Chopper Utensil, Professional Heat Resistant Nylon, Masher & Smasher Meat, Potato Masher Ground Beef & Turkey -Non Stick Mix Chopper for Kitchen Tool',NULL,'B092J886NK','https://m.media-amazon.com/images/I/516PFlbwTML._AC_UL320_.jpg',4063,4.6,'$5.30','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/hamburger-Professional-Multifunctional-Resistant-Non-Stick/dp/B092J886NK/ref=sr_1_88?keywords=kitchen&qid=1703020326&sr=8-88',43,'2023-12-19 15:12:07.872525-06','2023-12-19 15:12:07.872525-06','www.amazon.com'),
+ (3268,'WISELIFE Dish Drying Mat Coffee Mat Super Absorbent Drying Mat Large Dish Drying Mats for Kitchen Counter Easy clean Dish Mat Kitchen Drying Mat 15" x 18" Grey',NULL,'B0C77R396Q','https://m.media-amazon.com/images/I/71Oj3y8SdWL._AC_UL320_.jpg',340,4.4,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WISELIFE-Drying-Absorbent-Kitchen-Counter/dp/B0C77R396Q/ref=sr_1_89?keywords=kitchen&qid=1703020326&sr=8-89',43,'2023-12-19 15:12:07.882419-06','2023-12-19 15:12:07.882419-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3269,'Glad ForceFlex Tall Kitchen Drawstring Trash Bags, 13 Gal, Unscented, 120 Ct (Packaging May Vary)',NULL,'B087NN1L8W','https://m.media-amazon.com/images/I/71TmWKgkg5L._AC_UL320_.jpg',67381,4.7,'$20.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Glad-ForceFlex-Kitchen-Drawstring-Unscented/dp/B087NN1L8W/ref=sr_1_90?keywords=kitchen&qid=1703020326&sr=8-90',43,'2023-12-19 15:12:07.89541-06','2023-12-19 15:12:07.89541-06','www.amazon.com'),
+ (3270,'Cuisinart Large Spin Stop Salad Spinner- Wash, Spin & Dry Salad Greens, Fruits & Vegetables, 5qt, CTG-00-SAS1',NULL,'B0CCB7HTN8','https://m.media-amazon.com/images/I/71gjdE47JNL._AC_UL320_.jpg',9505,4.5,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cuisinart-Spinner-Greens-Vegetables-CTG-00-SAS1/dp/B0CCB7HTN8/ref=sr_1_91?keywords=kitchen&qid=1703020326&sr=8-91',43,'2023-12-19 15:12:07.905981-06','2023-12-19 15:12:07.905981-06','www.amazon.com'),
+ (3271,'TrendPlain 16oz Oil Dispenser Bottle for Kitchen - 2 in 1 Olive Oil Dispenser and Oil Sprayer - 470ml Olive Oil Bottle - Oil Sprayer for Cooking, Kitchen, Salad, Barbecue Black',NULL,'B0CJF94M8J','https://m.media-amazon.com/images/I/81PRchbqh2L._AC_UL320_.jpg',17,4.9,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TrendPlain-16oz-Dispenser-Bottle-Kitchen/dp/B0CJF94M8J/ref=sr_1_92?keywords=kitchen&qid=1703020326&sr=8-92',43,'2023-12-19 15:12:07.915834-06','2023-12-19 15:12:07.915834-06','www.amazon.com'),
+ (3272,'Runnatal Large Dish Drying Rack with Drainboard Set, Detachable 2-in-1 Large-Capacity 2-Tier Over The Sink and Drainer for Kitchen Counter',NULL,'B0BTYQYDJB','https://m.media-amazon.com/images/I/81+-p1KjCmL._AC_UL320_.jpg',287,4.4,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Runnatal-Drainboard-Detachable-Large-Capacity-Drainer/dp/B0BTYQYDJB/ref=sr_1_93?keywords=kitchen&qid=1703020326&sr=8-93',43,'2023-12-19 15:12:07.927605-06','2023-12-19 15:12:07.927605-06','www.amazon.com'),
+ (3273,'EyeVac Home Touchless Vacuum Automatic Dustpan - Great for Sweeping Salon Pet Hair Food Dirt Kitchen - Ultra Fast & Powerful, Corded Canister Vacuum, Bagless, Automatic Sensors, 1000 Watt (White)',NULL,'B00RVMC58U','https://m.media-amazon.com/images/I/519GnS9rODL._AC_UL320_.jpg',10830,4.7,'$149.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/EyeVac-Touchless-Stationary-Filtration-Automatic/dp/B00RVMC58U/ref=sr_1_94?keywords=kitchen&qid=1703020326&sr=8-94',43,'2023-12-19 15:12:07.937209-06','2023-12-19 15:12:07.937209-06','www.amazon.com'),
+ (3274,'Glad ForceFlex Tall Kitchen Drawstring Trash Bags, 13 Gal, Fresh Clean Scent with Febreze, 110 Ct',NULL,'B00FQT4LX2','https://m.media-amazon.com/images/I/81sSgUhdALL._AC_UL320_.jpg',93293,4.7,'$21.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Glad-Tall-Kitchen-Drawstring-Trash/dp/B00FQT4LX2/ref=sr_1_95?keywords=kitchen&qid=1703020326&rdc=1&sr=8-95',43,'2023-12-19 15:12:07.947398-06','2023-12-19 15:12:07.947398-06','www.amazon.com'),
+ (3275,'Kitchen Utensils Set- 35 PCs Cooking Utensils with Grater,Tongs, Spoon Spatula &Turner Made of Heat Resistant Food Grade Silicone and Wooden Handles Kitchen Gadgets Tools Set for Nonstick Cookware',NULL,'B094PTSRP9','https://m.media-amazon.com/images/I/71yxPx0ekLS._AC_UL320_.jpg',1981,4.5,'$34.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Utensils-Resistant-Silicone-Nonstick-Cookware/dp/B094PTSRP9/ref=sr_1_96?keywords=kitchen&qid=1703020326&sr=8-96',43,'2023-12-19 15:12:07.95826-06','2023-12-19 15:12:07.95826-06','www.amazon.com'),
+ (3276,'HuggieGems 4 Pack Magnetic Spice Rack Organizer for Refrigerator and Microwave Oven, Metal Fridge Shelf for Kitchen, Black',NULL,'B0BV76WW86','https://m.media-amazon.com/images/I/81qpfcwwKkL._AC_UL320_.jpg',364,4.7,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HuggieGems-Magnetic-Organizer-Refrigerator-Microwave/dp/B0BV76WW86/ref=sr_1_97?keywords=kitchen&qid=1703020326&sr=8-97',43,'2023-12-19 15:12:07.968439-06','2023-12-19 15:12:07.968439-06','www.amazon.com'),
+ (3277,'Rotating Spice Rack with Free 20 Seasoning Jars,Revolving Tower Organizer Stainless Steel for Kitchen Storage,with Reusable Labels and Funnel complete set',NULL,'B0991RD875','https://m.media-amazon.com/images/I/71slT2UOz3L._AC_UL320_.jpg',551,4.6,'$26.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Organizer-Seasoning-Revolving-Stainless-Kitchen-Storage/dp/B0991RD875/ref=sr_1_98?keywords=kitchen&qid=1703020326&sr=8-98',43,'2023-12-19 15:12:07.979446-06','2023-12-19 15:12:07.979446-06','www.amazon.com'),
+ (3278,'Pots and Pans Organizer Under Cabinet - 8-Tier Adjustable Pan Organizer Rack for Cabinet - Heavy-Duty Pot & Pan Organizer - Perfect to Store Pots, Pans, Lids - Easy Kitchen Organization and Storage',NULL,'B0C1N9SWDZ','https://m.media-amazon.com/images/I/718uB7VNk8L._AC_UL320_.jpg',64,4.6,'$22.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pots-Pans-Organizer-Cabinet-Adjustable/dp/B0C1N9SWDZ/ref=sr_1_99?keywords=kitchen&qid=1703020326&sr=8-99',43,'2023-12-19 15:12:07.993173-06','2023-12-19 15:12:07.993173-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3279,'Joined Cheese Grater with Container - Box Grater Cheese Shredder Lemon Zester Grater - Cheese Grater with Handle - Graters for Kitchen Stainless Steel Food Grater - Hand Grater and Vegetable Peeler',NULL,'B0B1MCRR88','https://m.media-amazon.com/images/I/91Ty2ymWINL._AC_UL320_.jpg',1225,4.6,'$14.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Joined-Cheese-Grater-Container-Stainless/dp/B0B1MCRR88/ref=sr_1_100?keywords=kitchen&qid=1703020326&sr=8-100',43,'2023-12-19 15:12:08.004369-06','2023-12-19 15:12:08.004369-06','www.amazon.com'),
+ (3280,'3-In-1 Sponge Holder for Kitchen Sink, 2 Suspension Options(Suction Cups & Adhesive Hook), Hanging Sink Caddy Organizer Rack - Sponge, Dish Cloth, Brush, Scrubber, Soap Tray, 304 Stainless Steel',NULL,'B0BFPQBKJ5','https://m.media-amazon.com/images/I/81VfuNGFXUL._AC_UL320_.jpg',1086,4.4,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kitchen-Suspension-Options-Adhesive-Organizer/dp/B0BFPQBKJ5/ref=sr_1_101?keywords=kitchen&qid=1703020326&sr=8-101',43,'2023-12-19 15:12:08.014417-06','2023-12-19 15:12:08.014417-06','www.amazon.com'),
+ (3281,'Kitchen Mama Auto Electric Can Opener Christmas Gift Ideas: Open Your Cans with A Simple Press of Button - Automatic, Hands Free, Smooth Edge, Food-Safe, Battery Operated, YES YOU CAN (Red)',NULL,'B07FVQLBL3','https://m.media-amazon.com/images/I/61eqNRPW8mL._AC_UL320_.jpg',92204,4.3,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kitchen-Mama-Automatic-Electric-Opener/dp/B07FVQLBL3/ref=sr_1_102?keywords=kitchen&qid=1703020326&sr=8-102',43,'2023-12-19 15:12:08.026947-06','2023-12-19 15:12:08.026947-06','www.amazon.com'),
+ (3282,'Cuisinart TOB-40FR Custom Classic Toaster Oven Broiler, Silver (Renewed)',NULL,'B00M13RBBU','https://m.media-amazon.com/images/I/61OazbjpleL._AC_UL320_.jpg',279,4.1,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cuisinart-TOB-40FR-Classic-Toaster-Broiler/dp/B00M13RBBU/ref=sr_1_104?keywords=kitchen&qid=1703020326&sr=8-104',43,'2023-12-19 15:12:08.037815-06','2023-12-19 15:12:08.037815-06','www.amazon.com'),
+ (3283,'BLACK+DECKER 10-Speed Countertop Blender with 48oz Glass Jar and 4-point Stainless Steel Blade',NULL,'B00OW16ZR0','https://m.media-amazon.com/images/I/81n-9sDsr6L._AC_UL320_.jpg',18728,4.2,'$32.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BLACK-DECKER-Countertop-10-Speed-BL2010BG/dp/B00OW16ZR0/ref=sr_1_105?keywords=kitchen&qid=1703020326&sr=8-105',43,'2023-12-19 15:12:08.046975-06','2023-12-19 15:12:08.046975-06','www.amazon.com'),
+ (3284,'SpaceAid Glass Spice Drawer Organizer with 28 Spice Jars, 386 Labels and Chalk Marker, 4 Tier Seasoning Rack Tray Insert for Kitchen Drawers, 13" Wide x 17.5" Deep, Black',NULL,'B09GB35JP1','https://m.media-amazon.com/images/I/81xRAYijFhL._AC_UL320_.jpg',3785,4.8,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SpaceAid-Organizer-Seasoning-Kitchen-Drawers/dp/B09GB35JP1/ref=sr_1_106?keywords=kitchen&qid=1703020326&sr=8-106',43,'2023-12-19 15:12:08.055901-06','2023-12-19 15:12:08.055901-06','www.amazon.com'),
+ (3506,'Lexiart',NULL,'B07Y9MBKSN','https://m.media-amazon.com/images/I/71eCUo9NGUL._AC_UL320_.jpg',29464,4.1,'$23.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/lexiart-Fashion-Athletic-Sweatshirt-Pullover/dp/B07Y9MBKSN/ref=sr_1_6?keywords=men%27s+clothing&qid=1703020369&sr=8-6',46,'2023-12-19 15:12:50.811868-06','2023-12-19 15:12:50.811868-06','www.amazon.com'),
+ (3285,'HIWARE 48-Piece Silverware Set with Steak Knives for 8, Stainless Steel Flatware Cutlery Set For Home Kitchen Restaurant Hotel, Kitchen Utensils Set, Mirror Polished, Dishwasher Safe',NULL,'B07ZVC6DMM','https://m.media-amazon.com/images/I/71f6drMnaaL._AC_UL320_.jpg',18746,4.5,'$25.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/40-Piece-Silverware-Stainless-Restaurant-Dishwasher/dp/B07ZVC6DMM/ref=sr_1_107?keywords=kitchen&qid=1703020326&sr=8-107',43,'2023-12-19 15:12:08.066869-06','2023-12-19 15:12:08.066869-06','www.amazon.com'),
+ (3286,'PrepNaturals Vegetable Chopper with Container, Veggie Chopper - Chopper Vegetable Cutter, Food Chopper & Onion Chopper - Onion Chopper Dicers, Choppers, Mandoline Slicer for Kitchen (2-in-1 Black)',NULL,'B0BNJ7FCJM','https://m.media-amazon.com/images/I/71hWyc5qkkL._AC_UL320_.jpg',2421,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vegetable-Chopper-Veggie-Container-Choppers/dp/B0BNJ7FCJM/ref=sr_1_108?keywords=kitchen&qid=1703020326&sr=8-108',43,'2023-12-19 15:12:08.078536-06','2023-12-19 15:12:08.078536-06','www.amazon.com'),
+ (3184,'Geedel Rotary Cheese Grater, Kitchen Mandoline Vegetable Slicer with 3 Interchangeable Blades, Easy to Clean Grater for Fruit, Vegetables, Nuts',NULL,'B07P6G5L35','https://aax-us-iad.amazon.com/e/loi/imp?b=JJu1CqlJUWfxfb9bRVKFWpUAAAGMg-vveQEAAAH2AQBvbm9fdHhuX2JpZDQgICBvbm9fdHhuX2ltcDEgICDr6Kgs',18670,4.6,'$28.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RM2YpADWcwUWD2PSZSD1xXEAAAGMg-vTnAEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICByGBlM/https://www.amazon.com/Geedel-Graters-Mandoline-Interchangeable-Vegetables/dp/B07P6G5L35/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=kitchen&keywords=kitchen&pd_rd_i=B07P6G5L35&pd_rd_r=0608adb7-b7e3-4d7a-bd56-8a24ad8d3cfe&pd_rd_w=7HnFq&pd_rd_wg=vZvxb&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=HHR7054K8QZ4XP50CHQ1&qid=1703020319&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',43,'2023-12-19 15:12:00.664628-06','2023-12-19 15:12:08.087139-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3287,'Hooga Red Light Therapy Device, 660nm 850nm Near Infrared Light Therapy with Timer, Built in Stand, Clinical Grade High Power Output for Skin Health, Pain Relief, Muscle Recovery, Performance.',NULL,'B092BCWQMK','https://m.media-amazon.com/images/I/61Y2BlzPLpL._AC_UL320_.jpg',142,4.5,'$119.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfYXRmOjIwMDA3MDY1NTE3NDU4MTo6MDo6&url=%2FTherapy-Built-Performance-Recovery-Relief%2Fdp%2FB092BCWQMK%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',44,'2023-12-19 15:12:17.576345-06','2023-12-19 15:12:17.576345-06','www.amazon.com'),
+ (3288,'The Mind-Gut Connection: How the Hidden Conversation Within Our Bodies Impacts Our Mood, Our Choices, and Our Overall Health',NULL,'B09GCWZ5SV','https://m.media-amazon.com/images/I/71aBnlgaJbL._AC_UL320_.jpg',3013,4.5,'$11.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mind-Gut-Connection-Conversation-Impacts-Choices/dp/B09GCWZ5SV/ref=sr_1_3?keywords=health&qid=1703020336&sr=8-3',44,'2023-12-19 15:12:17.589079-06','2023-12-19 15:12:17.589079-06','www.amazon.com'),
+ (3289,'Albatross Health New England Sleep Mask for Men Women, Upgraded 3D Contoured Cup Eye mask with Adjustable Strap, Breathable & Soft for Sleeping, Yoga, Traveling (Black)',NULL,'B095C7H62X','https://m.media-amazon.com/images/I/61wWSFWoqrL._AC_UL320_.jpg',9028,4.6,'$8.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Adjustable-Blocking-Breathable-Comfortable-Traveling/dp/B095C7H62X/ref=sr_1_4?keywords=health&qid=1703020336&sr=8-4',44,'2023-12-19 15:12:17.597057-06','2023-12-19 15:12:17.597057-06','www.amazon.com'),
+ (3290,'Sunny Health & Fitness Magnetic Sitting Under Desk Elliptical Peddler, Portable Foot & Leg Pedal Exerciser for Gym, Home or Work, Adults to Seniors, Fully Assembled',NULL,'B07MWV1JD7','https://m.media-amazon.com/images/I/61D7vcriVAL._AC_UL320_.jpg',10928,4.4,'$110.48','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MDE2MzU3NDAwMjU4NzE3OjE3MDMwMjAzMzY6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDAxOTk4OTk2Mzc3MTo6MTo6&url=%2FSunny-Health-Fitness-Assembled-Elliptical%2Fdp%2FB07MWV1JD7%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dhealth%26keywords%3Dhealth%26pd_rd_i%3DB07MWV1JD7%26pd_rd_r%3D6d704826-48bf-4eb2-ac2c-8658c441c714%26pd_rd_w%3D7oJJa%26pd_rd_wg%3Dhup23%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D400JBE22NEZD00Z7QY0Y%26qid%3D1703020336%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',44,'2023-12-19 15:12:17.605-06','2023-12-19 15:12:17.605-06','www.amazon.com'),
+ (3302,'Digital Hearing Amplifier - Next Generation In the Ear Personal Sound Device w/Noise Reduction - Rechargeable ITE 2 Piece Set, Portable Charging Case Sound Assist for Adults and Seniors, Black',NULL,'B08SZ4MHYV','https://m.media-amazon.com/images/I/71ysmb+cX8L._AC_UL320_.jpg',179,3.4,'$87.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfbXRmOjMwMDA5ODQ2MDk0ODEwMjo6MDo6&url=%2FDigital-Hearing-Amplifier-Generation-Rechargeable%2Fdp%2FB08SZ4MHYV%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:17.702151-06','2023-12-19 15:12:17.702151-06','www.amazon.com'),
+ (3291,'Further Food Best Collagen Peptides Powder Vanilla Flavored Keto Grass-Fed Collagen Type 1 & 3, Joint Support Gut Health + Hair Skin Nails Beauty Tremella Mushroom Paleo Keto Sugar-Free (70 Servings)',NULL,'B09LK4SSWJ','https://m.media-amazon.com/images/I/61edsA8ZsGL._AC_UL320_.jpg',1225,4.5,'$48.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MDE2MzU3NDAwMjU4NzE3OjE3MDMwMjAzMzY6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA0NDk0NDI2ODAwMjo6Mjo6&url=%2FFurther-Food-Collagen-Grass-Fed-Sugar-Free%2Fdp%2FB09LK4SSWJ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dhealth%26keywords%3Dhealth%26pd_rd_i%3DB09LK4SSWJ%26pd_rd_r%3D6d704826-48bf-4eb2-ac2c-8658c441c714%26pd_rd_w%3D7oJJa%26pd_rd_wg%3Dhup23%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D400JBE22NEZD00Z7QY0Y%26qid%3D1703020336%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',44,'2023-12-19 15:12:17.615158-06','2023-12-19 15:12:17.615158-06','www.amazon.com'),
+ (3292,'NATURELO One Daily Multivitamin for Men 50+ - with Vitamins & Minerals + Organic Whole Foods - Supplement to Boost Energy, General Health - Non-GMO - 120 Capsules - 4 Month Supply',NULL,'B09TCNJHN8','https://m.media-amazon.com/images/I/71USZit69lL._AC_UL320_.jpg',100,4.7,'$39.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MDE2MzU3NDAwMjU4NzE3OjE3MDMwMjAzMzY6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE0NzE5NzA3NzE5ODo6Mzo6&url=%2FNATURELO-One-Daily-Multivitamin-Men%2Fdp%2FB09TCNJHN8%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dhealth%26keywords%3Dhealth%26pd_rd_i%3DB09TCNJHN8%26pd_rd_r%3D6d704826-48bf-4eb2-ac2c-8658c441c714%26pd_rd_w%3D7oJJa%26pd_rd_wg%3Dhup23%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D400JBE22NEZD00Z7QY0Y%26qid%3D1703020336%26rdc%3D1%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',44,'2023-12-19 15:12:17.625501-06','2023-12-19 15:12:17.625501-06','www.amazon.com'),
+ (3293,'Zesty Paws Multivitamin Treats for Dogs - Glucosamine Chondroitin for Joint Support + Digestive Enzymes & Probiotics - Grain Free Dog Vitamin for Skin & Coat + Immune Health - Chicken Flavor - 90ct',NULL,'B07121B839','https://m.media-amazon.com/images/I/7183A1-ljvL._AC_UL320_.jpg',45831,4.5,'$29.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zesty-Paws-Dog-Multivitamin-Chew/dp/B07121B839/ref=sr_1_6?keywords=health&qid=1703020336&sr=8-6',44,'2023-12-19 15:12:17.633834-06','2023-12-19 15:12:17.633834-06','www.amazon.com'),
+ (3294,'OLLY Probiotic + Prebiotic Gummy, Digestive Support and Gut Health, 500 Million CFUs, Fiber, Adult Chewable Supplement for Men and Women, Peach, 30 Day Supply - 30 Count',NULL,'B012RFVHSO','https://m.media-amazon.com/images/I/616k5WKNFJL._AC_UL320_.jpg',20379,4.5,'$12.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Balanced-Supplement-Prebiotic-Probiotic-Packaging/dp/B012RFVHSO/ref=sr_1_7?keywords=health&qid=1703020336&sr=8-7',44,'2023-12-19 15:12:17.641348-06','2023-12-19 15:12:17.641348-06','www.amazon.com'),
+ (3295,'Ayurveda for Women: The Power of Food as Medicine with Recipes for Health and Wellness',NULL,'B0B5M3WHL6','https://m.media-amazon.com/images/I/915f33RFL1L._AC_UL320_.jpg',239,4.5,'$17.09','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ayurveda-Women-Medicine-Recipes-Wellness/dp/B0B5M3WHL6/ref=sr_1_8?keywords=health&qid=1703020336&sr=8-8',44,'2023-12-19 15:12:17.648414-06','2023-12-19 15:12:17.648414-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3296,'52-Week Mental Health Journal: Guided Prompts and Self-Reflection to Reduce Stress and Improve Wellbeing',NULL,'1648767699','https://m.media-amazon.com/images/I/617C8gLMdqL._AC_UL320_.jpg',1453,4.6,'$13.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/52-Week-Mental-Health-Journal-Self-Reflection/dp/1648767699/ref=sr_1_10?keywords=health&qid=1703020336&sr=8-10',44,'2023-12-19 15:12:17.659442-06','2023-12-19 15:12:17.659442-06','www.amazon.com'),
+ (3297,'Force Factor Total Beets Soft Chews with Beetroot, Nitrates, L-Citrulline, Grapeseed Extract, and Antioxidants, Healthy Energy Supplement with Elite Ingredients, Heart Health Superfood, 60 Chews',NULL,'B095WNBLMN','https://m.media-amazon.com/images/I/81xNUjg3luL._AC_UL320_.jpg',9252,4.5,'$14.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/L-Citrulline-Antioxidants-Ingredients-Force-Factor/dp/B095WNBLMN/ref=sr_1_11?keywords=health&qid=1703020336&sr=8-11',44,'2023-12-19 15:12:17.666601-06','2023-12-19 15:12:17.666601-06','www.amazon.com'),
+ (3298,'Health By Habit Collagen Supplement (60 Capsules) - Vitamin C & Vitamin E, 2000mg, Collagen Peptides, Superior Absorption, Support Your Skin, Non-GMO, Sugar Free (1 Pack)',NULL,'B0B44PMG97','https://m.media-amazon.com/images/I/61-VFZbjZXL._AC_UL320_.jpg',499,4.6,'$7.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Health-Habit-Collagen-Supplement-Capsules/dp/B0B44PMG97/ref=sr_1_12?keywords=health&qid=1703020336&sr=8-12',44,'2023-12-19 15:12:17.673469-06','2023-12-19 15:12:17.673469-06','www.amazon.com'),
+ (3507,'Amazon Essentials',NULL,'B07BJKSJ8R','https://m.media-amazon.com/images/I/91uVLtKK8mL._AC_UL320_.jpg',12288,4.4,'$16.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Regular-Fit-Long-Sleeve-Heather/dp/B07BJKSJ8R/ref=sr_1_7?keywords=men%27s+clothing&qid=1703020369&sr=8-7',46,'2023-12-19 15:12:50.819568-06','2023-12-19 15:12:50.819568-06','www.amazon.com'),
+ (3303,'Sunny Health & Fitness Mini Stepper for Exercise Low-Impact Stair Step Cardio Equipment with Resistance Bands, Digital Monitor, Optional Twist Motion Stepper',NULL,'B0016BQFSS','https://m.media-amazon.com/images/I/61vNQX1dyML._AC_UL320_.jpg',33052,4.4,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sunny-Health-Fitness-Stepper-Resistance/dp/B0016BQFSS/ref=sr_1_21?keywords=health&qid=1703020336&sr=8-21',44,'2023-12-19 15:12:17.712591-06','2023-12-19 15:12:17.712591-06','www.amazon.com'),
+ (3304,'Health By Habit Womens Multi Supplement 2 Pack (120 Capsules) - 23 Essential Vitamins and Minerals, Supports General Health & Wellness, Non-GMO, Sugar Free (2 Pack)',NULL,'B0BB9T88BD','https://m.media-amazon.com/images/I/61Yu9FYhZqL._AC_UL320_.jpg',1242,4.7,'$15.76','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Health-Habit-Womens-Supplement-Capsules/dp/B0BB9T88BD/ref=sr_1_23?keywords=health&qid=1703020336&sr=8-23',44,'2023-12-19 15:12:17.720647-06','2023-12-19 15:12:17.720647-06','www.amazon.com'),
+ (3305,'Healthyline Advanced Infrared Heating Pad - FSA HSA Eligible - Amethyst, Tourmaline and Jade Gemstones - Heated Mat with LED Red Lights, Negative Ions - 72 x 24 inches',NULL,'B079RRQ9P3','https://m.media-amazon.com/images/I/81AFqe9NCHL._AC_UL320_.jpg',128,4.2,'$1.045','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfbXRmOjMwMDAwMjUwNDc1NDcwMjo6MDo6&url=%2FHealthyLine-Advanced-Multi-Purpose-Gemstone-Heating%2Fdp%2FB079RRQ9P3%2Fref%3Dsr_1_26_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-26-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:17.727421-06','2023-12-19 15:12:17.727421-06','www.amazon.com'),
+ (3306,'Think, Learn, Succeed Curriculum Kit: Understanding and Using Your Mind to Thrive at School, the Workplace, and Life',NULL,'0801093562','https://m.media-amazon.com/images/I/817d4qbD7ML._AC_UL320_.jpg',1338,4.7,'$48.91','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfbXRmOjIwMDEzNDUzMTYwNDk5ODo6MDo6&url=%2FThink-Learn-Succeed-Curriculum-Understanding%2Fdp%2F0801093562%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:17.736443-06','2023-12-19 15:12:17.736443-06','www.amazon.com'),
+ (3307,'Health By Habit Libido Blend (60 Capsules) - Natural Aphrodisiac Blend with Maca, Ashwagandha, Vegan, Non-GMO, Sugar-Free (1 Pack)',NULL,'B0BL1MXV78','https://m.media-amazon.com/images/I/61G-8O7yrJL._AC_UL320_.jpg',715,3.9,'$7.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Health-Habit-Libido-Blend-Capsules/dp/B0BL1MXV78/ref=sr_1_29?keywords=health&qid=1703020336&sr=8-29',44,'2023-12-19 15:12:17.748027-06','2023-12-19 15:12:17.748027-06','www.amazon.com'),
+ (3308,'African Holistic Health',NULL,'1617590312','https://m.media-amazon.com/images/I/61A5sOEMQCL._AC_UL320_.jpg',5958,4.8,'$16.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/African-Holistic-Health-Llaila-Afrika/dp/1617590312/ref=sr_1_30?keywords=health&qid=1703020336&sr=8-30',44,'2023-12-19 15:12:17.755345-06','2023-12-19 15:12:17.755345-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3309,'Phillips'' Colon Health Daily Probiotic Capsules, 4-in-1 Symptom Defense to help defend against Occasional Gas, Bloating, Constipation, and Diarrhea, Daily Supplement, 60 Count',NULL,'B007RA0ZAQ','https://m.media-amazon.com/images/I/711dBMr7tpL._AC_UL320_.jpg',10749,4.6,'$22.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Phillips-Colon-Health-Probiotics-Constipation/dp/B007RA0ZAQ/ref=sr_1_31?keywords=health&qid=1703020336&rdc=1&sr=8-31',44,'2023-12-19 15:12:17.761425-06','2023-12-19 15:12:17.761425-06','www.amazon.com'),
+ (3310,'Outlive: The Science and Art of Longevity',NULL,'B0C5FZQSTG','https://m.media-amazon.com/images/I/71IQ8lCksdL._AC_UL320_.jpg',9754,4.6,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Outlive-Longevity-Peter-Attia-MD/dp/B0C5FZQSTG/ref=sr_1_32?keywords=health&qid=1703020336&sr=8-32',44,'2023-12-19 15:12:17.767727-06','2023-12-19 15:12:17.767727-06','www.amazon.com'),
+ (3311,'Colon Relief by VitaRange- Fast Constipation and Bloating Relief with Sunfiber Prebiotic Fiber and Pre + Probiotics for Digestive Health - 60 Chewable Strawberry Tablets – Doctor Formulated Probiotics',NULL,'B0CDN3G813','https://m.media-amazon.com/images/I/61bVY7RRI1L._AC_UL320_.jpg',24,3.9,'$27.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfbXRmOjMwMDA3ODk4OTE3NzMwMjo6MDo6&url=%2FVitaRange-Constipation-Prebiotic-Probiotics-Digestive%2Fdp%2FB0CDN3G813%2Fref%3Dsr_1_33_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-33-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:17.775758-06','2023-12-19 15:12:17.775758-06','www.amazon.com'),
+ (3312,'PURE ESSENCE LABS MyPure Lions Mane 4X Mushroom Supplement, 100% Real Mushroom Extract for Immune Support, Combat Stress and Build Energy, Immune Booster for Men and Women, 60 Capsules',NULL,'B07FKWV4GY','https://m.media-amazon.com/images/I/61SLGTVW2wL._AC_UL320_.jpg',133,4.6,'$48.12','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfbXRmOjIwMDE1NjgzNDg3NTM5ODo6MDo6&url=%2FMushroom-Extract-Supplement-Pure-Essence%2Fdp%2FB07FKWV4GY%2Fref%3Dsr_1_34_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-34-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:17.787411-06','2023-12-19 15:12:17.787411-06','www.amazon.com'),
+ (3724,'JUST MY SIZE',NULL,'B016LJ79XE','https://m.media-amazon.com/images/I/71JJ9VBUYTL._AC_UL320_.jpg',17263,4.1,'$12.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Just-My-Size-Womens-Jersey/dp/B016LJ79XE/ref=sr_1_81?keywords=women%27s+clothing&qid=1703020392&sr=8-81',47,'2023-12-19 15:13:13.857938-06','2023-12-19 15:13:13.857938-06','www.amazon.com'),
+ (3313,'Sireck 3D Sleep Mask,100% Light Blocking Travel Sleep Eye Mask for Men Women,15MM Depth Zero Pressure Night Eye Cover for Yoga Nap, Shift Work, Includes Black Travel Pouch',NULL,'B0C58PL75X','https://m.media-amazon.com/images/I/71ikzX6OzbL._AC_UL320_.jpg',27,4.6,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNzI2MjQ2MzQyMjM1NzE3OjE3MDMwMjAzMzY6c3BfbXRmOjMwMDA3NjE1MTk0MzYwMjo6MDo6&url=%2FSireck-Sleep-Blocking-Travel-Pressure%2Fdp%2FB0C58PL75X%2Fref%3Dsr_1_35_sspa%3Fkeywords%3Dhealth%26qid%3D1703020336%26sr%3D8-35-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:17.794643-06','2023-12-19 15:12:17.794643-06','www.amazon.com'),
+ (3314,'Heal',NULL,'B077TY9GYL','https://m.media-amazon.com/images/I/61B09yEYbiL._AC_UL320_.jpg',1579,4.5,'$2.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Heal-Dr-Deepak-Chopra/dp/B077TY9GYL/ref=sr_1_36?keywords=health&qid=1703020336&sr=8-36',44,'2023-12-19 15:12:17.803978-06','2023-12-19 15:12:17.803978-06','www.amazon.com'),
+ (3315,'Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones',NULL,'B0BT2Q64JW','https://m.media-amazon.com/images/I/81YkqyaFVEL._AC_UL320_.jpg',120082,4.8,'$13.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Atomic-Habits-Proven-Build-Break/dp/B0BT2Q64JW/ref=sr_1_37?keywords=health&qid=1703020336&sr=8-37',44,'2023-12-19 15:12:17.811399-06','2023-12-19 15:12:17.811399-06','www.amazon.com'),
+ (3316,'Hidden Potential: The Science of Achieving Greater Things',NULL,'B0CNBGY59W','https://m.media-amazon.com/images/I/71Pgrm3PqjL._AC_UL320_.jpg',714,4.6,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hidden-Potential-Science-Achieving-Greater/dp/B0CNBGY59W/ref=sr_1_39?keywords=health&qid=1703020336&sr=8-39',44,'2023-12-19 15:12:17.819485-06','2023-12-19 15:12:17.819485-06','www.amazon.com'),
+ (3317,'The 48 Laws of Power',NULL,'1665182768','https://m.media-amazon.com/images/I/61XUtQ7NTgL._AC_UL320_.jpg',71972,4.7,'$13.82','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/48-Laws-Power-Robert-Greene/dp/1665182768/ref=sr_1_41?keywords=health&qid=1703020336&sr=8-41',44,'2023-12-19 15:12:17.833913-06','2023-12-19 15:12:17.833913-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3318,'How to Be the Love You Seek: Break Cycles, Find Peace, and Heal Your Relationships',NULL,'B0CDZYFHV6','https://m.media-amazon.com/images/I/81os+EMaFaL._AC_UL320_.jpg',100,4.8,'$20.11','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/How-Love-You-Seek-Relationships/dp/B0CDZYFHV6/ref=sr_1_43?keywords=health&qid=1703020336&sr=8-43',44,'2023-12-19 15:12:17.841737-06','2023-12-19 15:12:17.841737-06','www.amazon.com'),
+ (3319,'The Best Minds: A Story of Friendship, Madness, and the Tragedy of Good Intentions',NULL,'B0B6ZC3S47','https://m.media-amazon.com/images/I/91D-QntwiDL._AC_UL320_.jpg',840,4.4,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Best-Minds-Friendship-Madness-Intentions-ebook/dp/B0B6ZC3S47/ref=sr_1_44?keywords=health&qid=1703020336&sr=8-44',44,'2023-12-19 15:12:17.848656-06','2023-12-19 15:12:17.848656-06','www.amazon.com'),
+ (3320,'The In-Between: Unforgettable Encounters During Life''s Final Moments',NULL,'B0C9F236WJ','https://m.media-amazon.com/images/I/81DIvrwrapL._AC_UL320_.jpg',5758,4.8,'$15.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Between-Unforgettable-Encounters-During-Moments/dp/B0C9F236WJ/ref=sr_1_45?keywords=health&qid=1703020336&sr=8-45',44,'2023-12-19 15:12:17.857722-06','2023-12-19 15:12:17.857722-06','www.amazon.com'),
+ (3321,'Herbs for Children''s Health: How to Make and Use Gentle Herbal Remedies for Soothing Common Ailments. A Storey BASICS® Title',NULL,'B00W4HAFSO','https://m.media-amazon.com/images/I/81szRUqGzeL._AC_UL320_.jpg',809,4.8,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Herbs-Childrens-Health-Remedies-Ailments-ebook/dp/B00W4HAFSO/ref=sr_1_46?keywords=health&qid=1703020336&sr=8-46',44,'2023-12-19 15:12:17.865154-06','2023-12-19 15:12:17.865154-06','www.amazon.com'),
+ (3322,'Black Seed Oil - 120 Softgel Capsules Skin Health (Non-GMO & Vegan) Cold-Pressed Nigella Sativa Producing Pure Black Cumin Seed Oil with Vitamin E - 500mg Each, 1000mg Per 2 Capsule Serving',NULL,'B0714PK8VV','https://m.media-amazon.com/images/I/71rYU6DwzPL._AC_UL320_.jpg',47413,4.5,'$18.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Black-Seed-Oil-Vegetarian-Cold-Pressed/dp/B0714PK8VV/ref=sr_1_47?keywords=health&qid=1703020336&sr=8-47',44,'2023-12-19 15:12:17.875051-06','2023-12-19 15:12:17.875051-06','www.amazon.com'),
+ (3323,'Fast Like a Girl: A Woman''s Guide to Using the Healing Power of Fasting to Burn Fat, Boost Energy, and Balance Hormones',NULL,'B0BSM5H8XF','https://m.media-amazon.com/images/I/61czCs8Z6iL._AC_UL320_.jpg',3378,4.7,'$15.55','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fast-Like-Girl-Healing-Hormones/dp/B0BSM5H8XF/ref=sr_1_48?keywords=health&qid=1703020336&sr=8-48',44,'2023-12-19 15:12:17.881453-06','2023-12-19 15:12:17.881453-06','www.amazon.com'),
+ (3324,'Blue Buffalo Health Bars Natural Crunchy Dog Treats Biscuits, Bacon, Egg & Cheese 56-oz Box',NULL,'B08XY8RGNJ','https://m.media-amazon.com/images/I/81LX2YUWqDL._AC_UL320_.jpg',24841,4.7,'$14.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Blue-Buffalo-Natural-Crunchy-Biscuits/dp/B08XY8RGNJ/ref=sr_1_49?keywords=health&qid=1703020336&sr=8-49',44,'2023-12-19 15:12:17.88893-06','2023-12-19 15:12:17.88893-06','www.amazon.com'),
+ (3325,'Mental Health Is Health Self Care Coloring Book: Anxiety Stress Relief Self Help Coloring Book for Adults and Kids with Motivational And Inspirational Quotes (Mental Health Coloring)',NULL,'B0B9VTCTMX','https://m.media-amazon.com/images/I/71ufsDHsZuL._AC_UL320_.jpg',180,4.7,'$9.14','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mental-Health-Self-Care-Coloring/dp/B0B9VTCTMX/ref=sr_1_50?keywords=health&qid=1703020336&sr=8-50',44,'2023-12-19 15:12:17.898361-06','2023-12-19 15:12:17.898361-06','www.amazon.com'),
+ (3326,'Health By Habit Energy Supplement 2 Pack (120 Capsules) - Natual Caffeine Blend, Vitamins B & C, Supports Energy Levels, Promotes Mental Alertness and Focus, Vegan, Non-GMO, Sugar Free (2 Pack)',NULL,'B0BB9TYMMY','https://m.media-amazon.com/images/I/619gD1eYowL._AC_UL320_.jpg',570,4.3,'$15.76','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Health-Habit-Energy-Supplement-Capsules/dp/B0BB9TYMMY/ref=sr_1_52?keywords=health&qid=1703020336&sr=8-52',44,'2023-12-19 15:12:17.905748-06','2023-12-19 15:12:17.905748-06','www.amazon.com'),
+ (3327,'Adult Children of Emotionally Immature Parents: How to Heal from Distant, Rejecting, or Self-Involved Parents',NULL,'1799980030','https://m.media-amazon.com/images/I/71HlOZwhjSL._AC_UL320_.jpg',21313,4.8,'$14.15','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Adult-Children-Emotionally-Immature-Parents/dp/1799980030/ref=sr_1_53?keywords=health&qid=1703020336&sr=8-53',44,'2023-12-19 15:12:17.916049-06','2023-12-19 15:12:17.916049-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3328,'23andMe Health + Ancestry Service: Personal Genetic DNA Test Including Health Predispositions, Carrier Status, Wellness, and Trait Reports (Before You Buy See Important Test Info Below)',NULL,'B01G7PYQTM','https://m.media-amazon.com/images/I/61VmiBwkp2L._AC_UL320_.jpg',35483,4.7,'$129.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/23andMe-DNA-Test-Ancestry-Personal/dp/B01G7PYQTM/ref=sr_1_55?keywords=health&qid=1703020336&sr=8-55',44,'2023-12-19 15:12:17.922884-06','2023-12-19 15:12:17.922884-06','www.amazon.com'),
+ (3329,'The Ultimate Pet Health Guide: Breakthrough Nutrition and Integrative Care for Dogs and Cats',NULL,'B096X3Y2Z8','https://m.media-amazon.com/images/I/714DmUlYdOL._AC_UL320_.jpg',3022,4.4,'$14.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ultimate-Pet-Health-Guide-Breakthrough/dp/B096X3Y2Z8/ref=sr_1_56?keywords=health&qid=1703020336&sr=8-56',44,'2023-12-19 15:12:17.929308-06','2023-12-19 15:12:17.929308-06','www.amazon.com'),
+ (3330,'Nutramax Cosequin Maximum Strength Joint Health Supplement for Dogs - With Glucosamine, Chondroitin, and MSM, 132 Chewable Tablets',NULL,'B003ULL1NQ','https://m.media-amazon.com/images/I/71EIMIILiML._AC_UL320_.jpg',71444,4.7,'$29.22','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cosequin-DS-Maximum-Strength-Chewable/dp/B003ULL1NQ/ref=sr_1_57?keywords=health&qid=1703020336&sr=8-57',44,'2023-12-19 15:12:17.93963-06','2023-12-19 15:12:17.93963-06','www.amazon.com'),
+ (3331,'Man''s Search for Meaning',NULL,'B001I8P5SA','https://m.media-amazon.com/images/I/91x-lhVENfL._AC_UL320_.jpg',84895,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mans-Search-Meaning-Viktor-Frankl/dp/B001I8P5SA/ref=sr_1_58?keywords=health&qid=1703020336&sr=8-58',44,'2023-12-19 15:12:17.94945-06','2023-12-19 15:12:17.94945-06','www.amazon.com'),
+ (3332,'Mental Health Journal for Men: Creative Prompts, Practices, and Exercises to Bolster Wellness',NULL,'1647396255','https://m.media-amazon.com/images/I/81gqs3itPkL._AC_UL320_.jpg',777,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mental-Health-Journal-Men-Practices/dp/1647396255/ref=sr_1_59?keywords=health&qid=1703020336&sr=8-59',44,'2023-12-19 15:12:17.958712-06','2023-12-19 15:12:17.958712-06','www.amazon.com'),
+ (3333,'Vital Proteins Collagen Peptides Powder, Promotes Hair, Nail, Skin, Bone and Joint Health - Bonus Size, Zero Sugar, Unflavored 11.4 OZ',NULL,'B0CMJPTH54','https://m.media-amazon.com/images/I/71gVNS-IqbL._AC_UL320_.jpg',43529,4.5,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vital-Proteins-Collagen-Peptides-Promotes/dp/B0CMJPTH54/ref=sr_1_60?keywords=health&qid=1703020336&sr=8-60',44,'2023-12-19 15:12:17.965532-06','2023-12-19 15:12:17.965532-06','www.amazon.com'),
+ (3334,'Digital Hearing Amplifier - Next Generation in The Ear Personal Sound Device w/Noise Reduction - Rechargeable ITE 2 Piece Set, Portable Charging Case Sound Assist for Adults and Seniors, White',NULL,'B08SZVL494','https://m.media-amazon.com/images/I/610UyoX4uOL._AC_UL320_.jpg',179,3.4,'$87.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfYXRmX25leHQ6MzAwMDk4NDYwOTQ4MDAyOjowOjo&url=%2FDigital-Hearing-Amplifier-Generation-Rechargeable%2Fdp%2FB08SZVL494%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',44,'2023-12-19 15:12:26.959828-06','2023-12-19 15:12:26.959828-06','www.amazon.com'),
+ (3335,'Basepaws Dog DNA Test: Comprehensive Breed, Trait, & Most Accurate Genetic Health Screening for Dogs - Reveal Over 300+ Breeds, 280+ Health Risks, and 30+ Traits',NULL,'B0CJXHW7XX','https://m.media-amazon.com/images/I/71+729-qvPL._AC_UL320_.jpg',1582,4.4,'$85.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfYXRmX25leHQ6MzAwMDY5MzkxMzcwMTAyOjowOjo&url=%2FBasepaws-Dog-DNA-Test-Comprehensive%2Fdp%2FB0CJXHW7XX%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',44,'2023-12-19 15:12:26.983172-06','2023-12-19 15:12:26.983172-06','www.amazon.com'),
+ (3369,'Super Gut: A Four-Week Plan to Reprogram Your Microbiome, Restore Health, and Lose Weight',NULL,'166860082X','https://m.media-amazon.com/images/I/71RP6wDST7L._AC_UL320_.jpg',1381,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Super-Gut-Four-Week-Reprogram-Microbiome/dp/166860082X/ref=sr_1_95?keywords=health&qid=1703020344&sr=8-95',44,'2023-12-19 15:12:27.286795-06','2023-12-19 15:12:27.286795-06','www.amazon.com'),
+ (4057,'ASICS',NULL,'B091KJKPQX','https://m.media-amazon.com/images/I/610-4jTqVvL._AC_UL320_.jpg',21467,4.5,'$42.01','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Gel-Venture-Running-Shoes-Habanero/dp/B091KJKPQX/ref=sr_1_48?keywords=men%27s+shoes&qid=1703020483&sr=8-48',53,'2023-12-19 15:14:45.063222-06','2023-12-19 15:14:45.063222-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3336,'RTBLE 28 OZ Irish Sea Moss Gel | (Family Value Size) Wildcrafted Seamoss Gel with 102 Minerals & Vitamins for Thyroid Support & Energy Recovery | Strawberry Flavor',NULL,'B0CJ95ZYCD','https://m.media-amazon.com/images/I/71Kiyzcs+AL._AC_UL320_.jpg',22,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfYXRmX25leHQ6MzAwMDkxMjAzNjUxODAyOjowOjo&url=%2FRTBLE-Wildcrafted-Minerals-Vitamins-Strawberry%2Fdp%2FB0CJ95ZYCD%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',44,'2023-12-19 15:12:26.990511-06','2023-12-19 15:12:26.990511-06','www.amazon.com'),
+ (3337,'Doctor''s Best High Absorption CoQ10 with BioPerine, Gluten Free, Naturally Fermented, Heart Health, Energy Production, 100 mg, 120 Count',NULL,'B0019GW3G8','https://m.media-amazon.com/images/I/61V2ccZ5zWL._AC_UL320_.jpg',29554,4.6,'$18.04','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Doctors-Best-Absorption-BioPerine-Production/dp/B0019GW3G8/ref=sr_1_53?keywords=health&qid=1703020344&sr=8-53',44,'2023-12-19 15:12:26.998685-06','2023-12-19 15:12:26.998685-06','www.amazon.com'),
+ (3338,'Zenwise Digestive Enzymes - Probiotic Multi Enzyme with Probiotics and Prebiotics for Digestive Health and Bloating Relief for Women and Men, Enzymes for Gut Health - 180 Count',NULL,'B00RH5K26I','https://m.media-amazon.com/images/I/71nTyfxit3L._AC_UL320_.jpg',65226,4.4,'$37.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zenwise-Health-Digestive-Prebiotics-Probiotics/dp/B00RH5K26I/ref=sr_1_55?keywords=health&qid=1703020344&rdc=1&sr=8-55',44,'2023-12-19 15:12:27.010194-06','2023-12-19 15:12:27.010194-06','www.amazon.com'),
+ (3339,'Forever Strong: A New, Science-Based Strategy for Aging Well',NULL,'1797169041','https://m.media-amazon.com/images/I/81R4yeXggkL._AC_UL320_.jpg',447,4.5,'$20.51','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Forever-Strong-Science-Based-Strategy-Aging/dp/1797169041/ref=sr_1_56?keywords=health&qid=1703020344&sr=8-56',44,'2023-12-19 15:12:27.022286-06','2023-12-19 15:12:27.022286-06','www.amazon.com'),
+ (3340,'The Good Gut: Taking Control of Your Weight, Your Mood, and Your Long-term Health',NULL,'1611764386','https://m.media-amazon.com/images/I/61jDhEAqywL._AC_UL320_.jpg',1043,4.5,'$15.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Good-Gut-Taking-Control-Long-Term/dp/1611764386/ref=sr_1_57?keywords=health&qid=1703020344&sr=8-57',44,'2023-12-19 15:12:27.029688-06','2023-12-19 15:12:27.029688-06','www.amazon.com'),
+ (3341,'AZO Cranberry Urinary Tract Health Supplement, 1 Serving = 1 Glass of Cranberry Juice, Sugar Free Cranberry Pills, Non-GMO 100 Softgels',NULL,'B004RR1FF6','https://m.media-amazon.com/images/I/71YozjE1DqL._AC_UL320_.jpg',59285,4.7,'$12.07','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cranberry-Urinary-Dietary-Supplement-Softgels/dp/B004RR1FF6/ref=sr_1_58?keywords=health&qid=1703020344&sr=8-58',44,'2023-12-19 15:12:27.038076-06','2023-12-19 15:12:27.038076-06','www.amazon.com'),
+ (3342,'Men''s Health: 15 Minute Workout [DVD]',NULL,'B000LXHJUU','https://m.media-amazon.com/images/I/51piUV0VBML._AC_UL320_.jpg',49,3.8,'$8.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mens-Health-15-Minute-Workout/dp/B000LXHJUU/ref=sr_1_59?keywords=health&qid=1703020344&sr=8-59',44,'2023-12-19 15:12:27.050387-06','2023-12-19 15:12:27.050387-06','www.amazon.com'),
+ (3343,'Probiotics for Women & Men - 300 Billion CFU & 24 Strains Probiotic with 15 Organic Herbs Prebiotics Blend, for Overall Digestive Health, Immune, Constipation, Gut & Bloating Health - 2 Month Supply',NULL,'B0CKXT2Q76','https://m.media-amazon.com/images/I/71ZBquYac4L._AC_UL320_.jpg',121,4.8,'$19.31','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Probiotics-Women-Men-Prebiotics-Constipation/dp/B0CKXT2Q76/ref=sr_1_60?keywords=health&qid=1703020344&sr=8-60',44,'2023-12-19 15:12:27.061102-06','2023-12-19 15:12:27.061102-06','www.amazon.com'),
+ (3344,'Crying in H Mart: A Memoir',NULL,'0525657746','https://m.media-amazon.com/images/I/81bSQ9N8VLL._AC_UL320_.jpg',21019,4.4,'$9.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crying-Mart-Memoir-Michelle-Zauner/dp/0525657746/ref=sr_1_61?keywords=health&qid=1703020344&sr=8-61',44,'2023-12-19 15:12:27.070175-06','2023-12-19 15:12:27.070175-06','www.amazon.com'),
+ (4650,'Shindel 30PCS Christmas Miniature Figurines, Mini Christmas Figurines 3D Resin Christmas Ornaments Decorations for Crafts Fairy Garden Advent Calendar Fillers',NULL,'B0CC1TM686','https://m.media-amazon.com/images/I/71pbyVfDDtL._AC_UL320_.jpg',2,2.9,'$3.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Shindel-Christmas-Miniature-Figurines-Decorations/dp/B0CC1TM686/ref=sr_1_64?keywords=decoration&qid=1703020701&sr=8-64',58,'2023-12-19 15:18:22.87859-06','2023-12-19 15:18:22.87859-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3346,'My Child''s Health Record Keeper (Log Book)',NULL,'1441313842','https://m.media-amazon.com/images/I/81eJujuIVRL._AC_UL320_.jpg',4028,4.8,'$7.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Childs-Health-Record-Keeper-Book/dp/1441313842/ref=sr_1_63?keywords=health&qid=1703020344&sr=8-63',44,'2023-12-19 15:12:27.090273-06','2023-12-19 15:12:27.090273-06','www.amazon.com'),
+ (3347,'OLLY Women''s Multivitamin Gummy, Overall Health and Immune Support, Vitamins A, D, C, E, Biotin, Folic Acid, Adult Chewable Vitamin, Berry, 45 Day Supply - 90 Count (Pack of 1)',NULL,'B014G4AY1A','https://m.media-amazon.com/images/I/618p8n-DwAL._AC_UL320_.jpg',35058,4.6,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Multivitamin-Blissful-Vitamins-Chewable-Supplement/dp/B014G4AY1A/ref=sr_1_64?keywords=health&qid=1703020344&sr=8-64',44,'2023-12-19 15:12:27.101711-06','2023-12-19 15:12:27.101711-06','www.amazon.com'),
+ (3348,'GLX3 Green Lipped Mussel Oil for Dogs - Joint & Hip Support Omega-3 Supplement - Supports Mobility and Joint Health, Ideal for All Dog Breeds and Ages - 60 Soft Chews - Natural Ingredients',NULL,'B071G1M69L','https://m.media-amazon.com/images/I/719TRw1BzAL._AC_UL320_.jpg',30,3.8,'$54.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfbXRmOjIwMDE2MDMzODQ2ODk5ODo6MDo6&url=%2FJoint-Pain-Relief-Supplement-Dogs%2Fdp%2FB071G1M69L%2Fref%3Dsr_1_66_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26rdc%3D1%26sr%3D8-66-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:27.109314-06','2023-12-19 15:12:27.109314-06','www.amazon.com'),
+ (3349,'Attached: The New Science of Adult Attachment and How It Can Help YouFind - and Keep - Love',NULL,'1529059305','https://m.media-amazon.com/images/I/71kpAWQz7EL._AC_UL320_.jpg',19343,4.7,'$15.30','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Attached/dp/1529059305/ref=sr_1_68?keywords=health&qid=1703020344&sr=8-68',44,'2023-12-19 15:12:27.117159-06','2023-12-19 15:12:27.117159-06','www.amazon.com'),
+ (3350,'Gaia Herbs Adrenal Health Daily Support - with Ashwagandha, Holy Basil & Schisandra - Herbal Supplement to Help Maintain Healthy Energy and Stress Levels - 120 Liquid Phyto-Capsules (120 Count)',NULL,'B0036THML2','https://m.media-amazon.com/images/I/71Y2VQoQ+cL._AC_UL320_.jpg',4822,4.6,'$47.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Gaia-Herbs-Adrenal-Support-Capsules/dp/B0036THML2/ref=sr_1_70?keywords=health&qid=1703020344&sr=8-70',44,'2023-12-19 15:12:27.127967-06','2023-12-19 15:12:27.127967-06','www.amazon.com'),
+ (3351,'Under The Weather Pet Disc & Spine Health Chews for Dog | Vet Formulated Dog Chews Spinal Disc Support Supplement | Great for Dachshunds & Long Back Breeds with IVDD, Back & Joint Arthritis',NULL,'B0BWKJD1FL','https://m.media-amazon.com/images/I/71xio0ED56L._AC_UL320_.jpg',41,4.2,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfbXRmOjMwMDA1NTY4NTUxMDAwMjo6MDo6&url=%2FUnder-Weather-Formulated-Supplement-Dachshunds%2Fdp%2FB0BWKJD1FL%2Fref%3Dsr_1_71_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26sr%3D8-71-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:27.135885-06','2023-12-19 15:12:27.135885-06','www.amazon.com'),
+ (3352,'Natren Healthy Trinity Probiotics Supplement - 90 Dairy and Gluten Free Gel Capsules - Improve Gut and Digestive Health, - 30 Billion CFU - Lactobacillus Acidophilus, Bifidobacterium, Bulgaricus',NULL,'B003E6ORTM','https://m.media-amazon.com/images/I/71OQi7AGgGL._AC_UL320_.jpg',196,4.5,'$132.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfbXRmOjIwMDAxNzM2NTAzNjQyMTo6MDo6&url=%2FNatren-Healthy-Trinity-Dairy-Free-capsules%2Fdp%2FB003E6ORTM%2Fref%3Dsr_1_73_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26sr%3D8-73-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:27.148353-06','2023-12-19 15:12:27.148353-06','www.amazon.com'),
+ (3353,'Ele Chocolates Dark Chocolate Daily Probiotic Supplement Bites 3 Billion CFUs for Digestive Gut Health, Immune Support for Women, Men and Kids, 100% Natural and Organic, Gluten-Free, 30 Days Supply',NULL,'B0BXQMXDT7','https://m.media-amazon.com/images/I/71zghisTjHL._AC_UL320_.jpg',13,5.0,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfbXRmOjMwMDA2MTgzMzQ0MjgwMjo6MDo6&url=%2FEle-Chocolates-Chocolate-Supplement-Gluten-Free%2Fdp%2FB0BXQMXDT7%2Fref%3Dsr_1_74_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26sr%3D8-74-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:27.15685-06','2023-12-19 15:12:27.15685-06','www.amazon.com'),
+ (3354,'The Chicken Health Handbook, 2nd Edition: A Complete Guide to Maximizing Flock Health and Dealing with Disease',NULL,'B09WWYX9YT','https://m.media-amazon.com/images/I/81RJijkUwXL._AC_UL320_.jpg',1306,4.8,'$17.93','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Chicken-Health-Handbook-2nd-Maximizing/dp/B09WWYX9YT/ref=sr_1_75?keywords=health&qid=1703020344&sr=8-75',44,'2023-12-19 15:12:27.164783-06','2023-12-19 15:12:27.164783-06','www.amazon.com'),
+ (3355,'12 Rules for Life: An Antidote to Chaos',NULL,'B0B53XTL4G','https://m.media-amazon.com/images/I/71PXmc5BgAL._AC_UL320_.jpg',59523,4.7,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/12-Rules-Life-Antidote-Chaos/dp/B0B53XTL4G/ref=sr_1_77?keywords=health&qid=1703020344&sr=8-77',44,'2023-12-19 15:12:27.175913-06','2023-12-19 15:12:27.175913-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3356,'Prostate Support Supplement for Men''s Health (120 Capsules) One Serving per Day for 30 Days Supports Prostate Function and Urinary Control (Saw Palmetto, Pumpkin Seed Oil, Selenium) by Double Wood',NULL,'B0CGMF8HCQ','https://m.media-amazon.com/images/I/81vwLQLm5GL._AC_UL320_.jpg',96,4.6,'$9.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Prostate-Supplement-Capsules-Double-Wood/dp/B0CGMF8HCQ/ref=sr_1_78?keywords=health&qid=1703020344&sr=8-78',44,'2023-12-19 15:12:27.182689-06','2023-12-19 15:12:27.182689-06','www.amazon.com'),
+ (3415,'DenTek Easy Brush Advanced Clean Interdental Cleaners, Standard, 16 Count, 6 Pack',NULL,'B00CD2922A','https://m.media-amazon.com/images/I/71IwAkjgGKL._AC_UL320_.jpg',2468,4.7,'$20.76','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DenTek-Interdental-Cleaners-Brushes-Standard/dp/B00CD2922A/ref=sr_1_33?keywords=dental&qid=1703020352&sr=8-33',45,'2023-12-19 15:12:33.309819-06','2023-12-19 15:12:33.309819-06','www.amazon.com'),
+ (3357,'Collagen Pills 1000mg Biotin 10000mcg Keratin Saw Palmetto 2500mg Hyaluronic Acid - Hair Skin and Nails Vitamins and DHT Blocker with Vitamin E Folic Acid Pumpkin Seed MSM Made in USA - 90 Count',NULL,'B0B3GBJJGW','https://m.media-amazon.com/images/I/81ooaO+kxRL._AC_UL320_.jpg',4138,4.4,'$29.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfbXRmOjIwMDA2ODk0ODEwMzA5ODo6MDo6&url=%2FCollagen-10000mcg-Keratin-Palmetto-Hyaluronic%2Fdp%2FB0B3GBJJGW%2Fref%3Dsr_1_79_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26rdc%3D1%26sr%3D8-79-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:27.19143-06','2023-12-19 15:12:27.19143-06','www.amazon.com'),
+ (3358,'Dr. Harvey''s Canine Health Miracle Dog Food, Human Grade Dehydrated Base Mix for Dogs with Organic Whole Grains and Vegetables (5 Pounds)',NULL,'B001B185I6','https://m.media-amazon.com/images/I/71Thbd+SxAL._AC_UL320_.jpg',4208,4.5,'$47.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTI2NDkxNTAzNTk0NzE3OjE3MDMwMjAzNDQ6c3BfbXRmOjMwMDA0NTI4MDA4NTcwMjo6MDo6&url=%2FDr-HarveyS-Canine-Health-Miracle%2Fdp%2FB001B185I6%2Fref%3Dsr_1_80_sspa%3Fkeywords%3Dhealth%26qid%3D1703020344%26rdc%3D1%26sr%3D8-80-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',44,'2023-12-19 15:12:27.198962-06','2023-12-19 15:12:27.198962-06','www.amazon.com'),
+ (3359,'How to Win Friends & Influence People (Dale Carnegie Books)',NULL,'1797140825','https://m.media-amazon.com/images/I/71vK0WVQ4rL._AC_UL320_.jpg',30624,4.7,'$10.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/How-Win-Friends-Influence-People/dp/1797140825/ref=sr_1_82?keywords=health&qid=1703020344&sr=8-82',44,'2023-12-19 15:12:27.206365-06','2023-12-19 15:12:27.206365-06','www.amazon.com'),
+ (3360,'The Health Anxiety Workbook: Practical Exercises to Overcome Your Health Worries',NULL,'B09LZ6CTKC','https://m.media-amazon.com/images/I/61LKEVIo4KL._AC_UL320_.jpg',128,4.5,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Health-Anxiety-Workbook-Practical-Exercises-ebook/dp/B09LZ6CTKC/ref=sr_1_85?keywords=health&qid=1703020344&sr=8-85',44,'2023-12-19 15:12:27.217264-06','2023-12-19 15:12:27.217264-06','www.amazon.com'),
+ (3361,'NOW Supplements, Prostate Health, Clinical Strength Saw Palmetto, Beta-Sitosterol & Lycopene, 180 Softgels',NULL,'B003P7YWDG','https://m.media-amazon.com/images/I/81SG-as3nZL._AC_UL320_.jpg',4133,4.3,'$37.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/NOW-Supplements-Prostate-Clinical-Beta-Sitosterol/dp/B003P7YWDG/ref=sr_1_86?keywords=health&qid=1703020344&sr=8-86',44,'2023-12-19 15:12:27.22459-06','2023-12-19 15:12:27.22459-06','www.amazon.com'),
+ (3362,'AncestryDNA Genetic Test Kit: Personalized Genetic Results, DNA Ethnicity Test, Origins & Ethnicities, Complete DNA Test',NULL,'B00TRLVKW0','https://m.media-amazon.com/images/I/617BGIO5IoL._AC_UL320_.jpg',82132,4.6,'$59.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AncestryDNA-Genetic-Ethnicity-Test/dp/B00TRLVKW0/ref=sr_1_87?keywords=health&qid=1703020344&sr=8-87',44,'2023-12-19 15:12:27.230779-06','2023-12-19 15:12:27.230779-06','www.amazon.com'),
+ (3363,'Physician''s Choice Probiotics for Women - PH Balance, Digestive, UT, & Feminine Health - 50 Billion CFU - 6 Unique Strains for Women - Organic Prebiotics, Cranberry Extract+ - Women Probiotic - 30 CT',NULL,'B07B8BSGPL','https://m.media-amazon.com/images/I/811xX0k4AmL._AC_UL320_.jpg',39519,4.5,'$21.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Physicians-Choice-Probiotics-Women-Prebiotics/dp/B07B8BSGPL/ref=sr_1_88?keywords=health&qid=1703020344&rdc=1&sr=8-88',44,'2023-12-19 15:12:27.238194-06','2023-12-19 15:12:27.238194-06','www.amazon.com'),
+ (3364,'Dr. A''s Habits of Health: The Path to Permanent Weight Control and Optimal Health',NULL,'0981914640','https://m.media-amazon.com/images/I/61GJzcYE6PL._AC_UL320_.jpg',1098,4.5,'$8.22','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-As-Habits-Health-Permanent/dp/0981914640/ref=sr_1_89?keywords=health&qid=1703020344&sr=8-89',44,'2023-12-19 15:12:27.245923-06','2023-12-19 15:12:27.245923-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3365,'Culturelle Pro Strength Daily Probiotic, Digestive Health Capsules, Supports Occasional Diarrhea, Gas & Bloating, Gluten and Soy Free, 60 Count',NULL,'B08Y66H6B7','https://m.media-amazon.com/images/I/71EPvEtquhL._AC_UL320_.jpg',19226,4.7,'$35.18','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Culturelle-Strength-Probiotic-Digestive-Naturally/dp/B08Y66H6B7/ref=sr_1_91?keywords=health&qid=1703020344&sr=8-91',44,'2023-12-19 15:12:27.253913-06','2023-12-19 15:12:27.253913-06','www.amazon.com'),
+ (3366,'Do-It-Yourself Herbal Medicine: Home-Crafted Remedies for Health and Beauty',NULL,'194241109X','https://m.media-amazon.com/images/I/91aXvJ1tsNL._AC_UL320_.jpg',644,4.7,'$14.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Do-Yourself-Herbal-Medicine-Home-Crafted/dp/194241109X/ref=sr_1_92?keywords=health&qid=1703020344&sr=8-92',44,'2023-12-19 15:12:27.263752-06','2023-12-19 15:12:27.263752-06','www.amazon.com'),
+ (3367,'The Magic Pill',NULL,'B078HFGJHV','https://m.media-amazon.com/images/I/71NkcRx0WmL._AC_UL320_.jpg',894,4.1,'$2.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Magic-Pill-Pete-Evans/dp/B078HFGJHV/ref=sr_1_93?keywords=health&qid=1703020344&sr=8-93',44,'2023-12-19 15:12:27.272363-06','2023-12-19 15:12:27.272363-06','www.amazon.com'),
+ (3368,'Everything I Know About Love: A Memoir',NULL,'1094114863','https://m.media-amazon.com/images/I/71rx1nvV+rL._AC_UL320_.jpg',23384,4.2,'$11.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Everything-Know-About-Love-Memoir/dp/1094114863/ref=sr_1_94?keywords=health&qid=1703020344&sr=8-94',44,'2023-12-19 15:12:27.279237-06','2023-12-19 15:12:27.279237-06','www.amazon.com'),
+ (3508,'Real Essentials',NULL,'B07NWZ6PBF','https://m.media-amazon.com/images/I/81+O6GnEKyL._AC_UL320_.jpg',46350,4.4,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/T-Shirt-Athletic-Essentials-Clothing-Undershirt/dp/B07NWZ6PBF/ref=sr_1_8?keywords=men%27s+clothing&qid=1703020369&sr=8-8',46,'2023-12-19 15:12:50.826881-06','2023-12-19 15:12:50.826881-06','www.amazon.com'),
+ (3370,'Nature''s Bounty Cranberry 4200mg With Vitamin C, Urinary Health & Immune Support, Cranberry Concentrate, 250 Rapid Release Softgels',NULL,'B002Y27JRE','https://m.media-amazon.com/images/I/71U4oblZFyL._AC_UL320_.jpg',20108,4.7,'$22.43','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Natures-Bounty-Cranberry-Supplement-Supports/dp/B002Y27JRE/ref=sr_1_96?keywords=health&qid=1703020344&sr=8-96',44,'2023-12-19 15:12:27.295012-06','2023-12-19 15:12:27.295012-06','www.amazon.com'),
+ (3371,'Breath: The New Science of a Lost Art',NULL,'B09F6ZNL3H','https://m.media-amazon.com/images/I/81NygdDiGRL._AC_UL320_.jpg',26421,4.7,'$14.68','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Breath-New-Science-Lost-Art/dp/B09F6ZNL3H/ref=sr_1_97?keywords=health&qid=1703020344&sr=8-97',44,'2023-12-19 15:12:27.305749-06','2023-12-19 15:12:27.305749-06','www.amazon.com'),
+ (3372,'Health By Habit Stress Relief Supplement (60 Capsules) - Vitamin B, Zen, Lemon Balm, Supports Relaxation, Mood Balance, Reduce Stress, Non-GMO, Sugar Free (1 Pack)',NULL,'B0BL1Q5LZT','https://m.media-amazon.com/images/I/61nNYO94SgL._AC_UL320_.jpg',290,4.5,'$8.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Health-Habit-Stress-Supplement-Capsules/dp/B0BL1Q5LZT/ref=sr_1_98?keywords=health&qid=1703020344&sr=8-98',44,'2023-12-19 15:12:27.313075-06','2023-12-19 15:12:27.313075-06','www.amazon.com'),
+ (3373,'Mastery',NULL,'0670024961','https://m.media-amazon.com/images/I/71B5yWb5t7L._AC_UL320_.jpg',9179,4.7,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mastery-Robert-Greene/dp/0670024961/ref=sr_1_100?keywords=health&qid=1703020344&sr=8-100',44,'2023-12-19 15:12:27.320317-06','2023-12-19 15:12:27.320317-06','www.amazon.com'),
+ (3374,'Thinking, Fast and Slow',NULL,'B09WJJQLXN','https://m.media-amazon.com/images/I/61fdrEuPJwL._AC_UL320_.jpg',41723,4.6,'$11.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Thinking-Fast-and-Slow/dp/B09WJJQLXN/ref=sr_1_101?keywords=health&qid=1703020344&sr=8-101',44,'2023-12-19 15:12:27.32712-06','2023-12-19 15:12:27.32712-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3375,'Prescription for Nutritional Healing, Sixth Edition: A Practical A-to-Z Reference to Drug-Free Remedies Using Vitamins, Minerals, Herbs, & Food Supplements',NULL,'B0C5RYF1LC','https://m.media-amazon.com/images/I/81AP3bwRliL._AC_UL320_.jpg',427,4.4,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Prescription-Nutritional-Healing-Supplements-Everything/dp/B0C5RYF1LC/ref=sr_1_102?keywords=health&qid=1703020344&sr=8-102',44,'2023-12-19 15:12:27.337375-06','2023-12-19 15:12:27.337375-06','www.amazon.com'),
+ (3376,'Etekcity Scale for Body Weight FSA HSA Store Eligible, Smart Bathroom Digital Weighing Machine for Fat BMI Muscle Composition, Accurate Bluetooth Home Use Health and Fitness Equipment for People',NULL,'B095YJW56C','https://m.media-amazon.com/images/I/91w5FDNyXNL._AC_UL320_.jpg',93557,4.7,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Etekcity-Bathroom-Weighing-Bluetooth-Electronic/dp/B095YJW56C/ref=sr_1_103?keywords=health&qid=1703020344&sr=8-103',44,'2023-12-19 15:12:27.348333-06','2023-12-19 15:12:27.348333-06','www.amazon.com'),
+ (3377,'The Laws of Human Nature',NULL,'B0CLSDV7VQ','https://m.media-amazon.com/images/I/71eXzhnrpbL._AC_UL320_.jpg',13665,4.8,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Laws-Human-Nature-Robert-Greene/dp/B0CLSDV7VQ/ref=sr_1_104?keywords=health&qid=1703020344&sr=8-104',44,'2023-12-19 15:12:27.357324-06','2023-12-19 15:12:27.357324-06','www.amazon.com'),
+ (3378,'ZO SKIN HEALTH Exfoliating Polish (formerly Offects Exfoliating Polish), 2.3 Ounce (Pack of 1), (22228834)',NULL,'B07MG7TR4S','https://m.media-amazon.com/images/I/71TaRzCCnZL._AC_UL320_.jpg',1170,4.6,'$53.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ZO-Skin-Health-Exfoliating-formerly/dp/B07MG7TR4S/ref=sr_1_105?keywords=health&qid=1703020344&sr=8-105',44,'2023-12-19 15:12:27.364427-06','2023-12-19 15:12:27.364427-06','www.amazon.com'),
+ (3379,'52 Weeks to Better Mental Health: A Guided Workbook for Self-Exploration and Growth (Volume 5) (Guided Workbooks, 4)',NULL,'078584189X','https://m.media-amazon.com/images/I/91aW9Q6rRqL._AC_UL320_.jpg',16,4.8,'$9.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Weeks-Better-Mental-Health-Self-Exploration/dp/078584189X/ref=sr_1_106?keywords=health&qid=1703020344&sr=8-106',44,'2023-12-19 15:12:27.375272-06','2023-12-19 15:12:27.375272-06','www.amazon.com'),
+ (3380,'The Seven Principles for Making Marriage Work: A Practical Guide from the Country''s Foremost Relationship Expert',NULL,'1665204443','https://m.media-amazon.com/images/I/81565Tx88KL._AC_UL320_.jpg',13385,4.7,'$13.74','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Seven-Principles-Making-Marriage-Work/dp/1665204443/ref=sr_1_107?keywords=health&qid=1703020344&sr=8-107',44,'2023-12-19 15:12:27.381891-06','2023-12-19 15:12:27.381891-06','www.amazon.com'),
+ (3381,'Bronson Milk Thistle Silymarin Marianum & Dandelion Root Liver Health Support, Antioxidant Support, Detox, 360 Capsules',NULL,'B0C9V6YH16','https://m.media-amazon.com/images/I/71YaVRqRvbL._AC_UL320_.jpg',24221,4.7,'$21.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bronson-Silymarin-Marianum-Dandelion-Antioxidant/dp/B0C9V6YH16/ref=sr_1_108?keywords=health&qid=1703020344&sr=8-108',44,'2023-12-19 15:12:27.393264-06','2023-12-19 15:12:27.393264-06','www.amazon.com'),
+ (3382,'Amazon Basics Extra Comfort Mint Dental Floss, 40 M, 1 Pack (Previously Solimo)',NULL,'B08QWZ4W24','https://m.media-amazon.com/images/I/61hEuEAjQFL._AC_UL320_.jpg',9776,4.4,'$3.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfYXRmOjIwMDA0NjE1MzAwNzQ0MTo6MDo6&url=%2FAmazon-Basics-Extra-Comfort-Dental%2Fdp%2FB08QWZ4W24%2Fref%3Dsr_1_1_ffob_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',45,'2023-12-19 15:12:33.055034-06','2023-12-19 15:12:33.055034-06','www.amazon.com'),
+ (3383,'Beauty Full Electrical 4 Motor Podiatry Chair Facial Massage Dental Aesthetic Reclining Chair All Purpose Bed - PAVO -White',NULL,'B01N4GOEVE','https://m.media-amazon.com/images/I/51AHhGO5KYL._AC_UL320_.jpg',88,4.8,'$2.299','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfYXRmOjIwMDAxMzY2MDIzNDUyMTo6MDo6&url=%2FElectrical-Podiatry-Massage-Aesthetic-Reclining%2Fdp%2FB01N4GOEVE%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',45,'2023-12-19 15:12:33.064297-06','2023-12-19 15:12:33.064297-06','www.amazon.com'),
+ (3384,'Dental Tools, Teeth Cleaning Tools, Professional Dental Hygiene Kit, Plaque Remover for Teeth, Stainless Steel Tooth Scraper Plaque Tartar Cleaner, Dental Scaler - with Case, Unflavored',NULL,'B078R7ZX1W','https://m.media-amazon.com/images/I/71ynkCPsX9L._AC_UL320_.jpg',54431,4.6,'$7.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Tools-Cleaning-Stainless-Remover/dp/B078R7ZX1W/ref=sr_1_4?keywords=dental&qid=1703020352&sr=8-4',45,'2023-12-19 15:12:33.071311-06','2023-12-19 15:12:33.071311-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3385,'GUM Soft-Picks Original, Easy to Use Dental Picks for Teeth Cleaning and Gum Health, Disposable Interdental Brushes with Convenient Carry Case, Dentist Recommended Dental Floss Picks, 100ct',NULL,'B079K5JTMZ','https://m.media-amazon.com/images/I/81Dbf8Ji6WL._AC_UL320_.jpg',20989,4.6,'$4.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GUM-Soft-Picks-Disposable-Interdental-Recommended/dp/B079K5JTMZ/ref=sr_1_5?keywords=dental&qid=1703020352&sr=8-5',45,'2023-12-19 15:12:33.077678-06','2023-12-19 15:12:33.077678-06','www.amazon.com'),
+ (3386,'Dental Tools, 10 Pack Professional Plaque Remover Teeth Cleaning Tools Set, Stainless Steel dental Hygiene Kit with Dental picks, Tartar Scraper, Tooth Scaler, Tongue Scraper, Dental Mirror- with Case',NULL,'B07PN9VVVG','https://m.media-amazon.com/images/I/71bRJWDb-4L._AC_UL320_.jpg',11918,4.6,'$9.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cleaning-Professional-Stainless-Tweezer-Personal/dp/B07PN9VVVG/ref=sr_1_6?keywords=dental&qid=1703020352&sr=8-6',45,'2023-12-19 15:12:33.084452-06','2023-12-19 15:12:33.084452-06','www.amazon.com'),
+ (4556,'OlarHike 6 Set Packing Cubes for Travel, 4 Various Sizes and 6 Color Options, Luggage Organizer Bags for Travel Accessories, Travel Cubes for Suitcases (Black)',NULL,'B09HGX7VV5','https://m.media-amazon.com/images/I/81OTZhP6deL._AC_UL320_.jpg',4310,4.7,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfYXRmX25leHQ6MjAwMTUwNDI1Njg4NTk4OjowOjo&url=%2FSet-Packing-Cubes-Various-Sizes-Color-Options-Luggage-Organizer-Bags-Travel-Accessories%2Fdp%2FB09HGX7VV5%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',57,'2023-12-19 15:18:07.885434-06','2023-12-19 15:18:07.885434-06','www.amazon.com'),
+ (3388,'The Humble Co. Floss Picks (200 Count) – Plant Based Dental Floss Picks for Superior Oral Care, Dental Hygiene, and Gum Health, Cruelty Free Tooth Floss Picks (Charcoal, Double Thread)',NULL,'B07NSBLN5J','https://m.media-amazon.com/images/I/71upWFgOIOL._AC_UL320_.jpg',2611,4.7,'$15.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozOTk1NzQ3NzY4MDE0NzE3OjE3MDMwMjAzNTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA0OTMyNTc1NzM3MTo6MDo6&url=%2FNatural-Dental-Floss-Picks-4pk%2Fdp%2FB07NSBLN5J%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB07NSBLN5J%26pd_rd_r%3Db4082be5-3659-4c04-95e1-c9c990733d67%26pd_rd_w%3DnVgTD%26pd_rd_wg%3DkNaLO%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D6BDACS52YWZ77X2S2NB1%26qid%3D1703020352%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:33.0982-06','2023-12-19 15:12:33.0982-06','www.amazon.com'),
+ (3389,'NatureWise Oral Health Chewable Probiotics | Supports Healthy Teeth, Gums, & Better Breath | Ear, Nose, Throat Immunity for Kids & Adults | Sugar-Free Natural Mint Flavor [2 Month Supply - 50 Tablets]',NULL,'B01E6C4H6U','https://m.media-amazon.com/images/I/71daFgxd60L._AC_UL320_.jpg',3040,4.2,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozOTk1NzQ3NzY4MDE0NzE3OjE3MDMwMjAzNTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5NTcwODM4MDY0MTo6MTo6&url=%2FNatureWise-Chewable-Probiotics-Supports-Sugar-Free%2Fdp%2FB01E6C4H6U%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB01E6C4H6U%26pd_rd_r%3Db4082be5-3659-4c04-95e1-c9c990733d67%26pd_rd_w%3DnVgTD%26pd_rd_wg%3DkNaLO%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D6BDACS52YWZ77X2S2NB1%26qid%3D1703020352%26rdc%3D1%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:33.10449-06','2023-12-19 15:12:33.10449-06','www.amazon.com'),
+ (3390,'Cocofloss Woven Dental Floss, Dentist-Designed Oral Care, Mint, Waxed, Expanding, Vegan, Kid-Friendly String Floss with Coconut Oil, 4 Spools (33 yd Each)',NULL,'B084RSJZY6','https://m.media-amazon.com/images/I/71c5dUFt9-L._AC_UL320_.jpg',7951,4.4,'$36.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozOTk1NzQ3NzY4MDE0NzE3OjE3MDMwMjAzNTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE2NDk4MTE3NzE5ODo6Mjo6&url=%2FCOCOFLOSS-Coconut-Oil-Infused-Dentist-Designed-Cruelty-Free%2Fdp%2FB084RSJZY6%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB084RSJZY6%26pd_rd_r%3Db4082be5-3659-4c04-95e1-c9c990733d67%26pd_rd_w%3DnVgTD%26pd_rd_wg%3DkNaLO%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D6BDACS52YWZ77X2S2NB1%26qid%3D1703020352%26rdc%3D1%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:33.110298-06','2023-12-19 15:12:33.110298-06','www.amazon.com'),
+ (4557,'Plush Velvet Travel Jewelry Case, Travel Jewelry Organizer, Jewelry Travel Case, Travel Jewelry Box, Small Jewelry Case for Women, Jewelry Travel Box, Earring Organizer with Mirror - Emerald Green',NULL,'B0C28CS8Q4','https://m.media-amazon.com/images/I/71kybmXExyL._AC_UL320_.jpg',74,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plush-Velvet-Travel-Jewelry-Case/dp/B0C28CS8Q4/ref=sr_1_53?keywords=travel+accessories&qid=1703020686&sr=8-53',57,'2023-12-19 15:18:07.891788-06','2023-12-19 15:18:07.891788-06','www.amazon.com'),
+ (3392,'Plackers Micro Mint Dental Floss Picks, 90 Count (Pack of 3)',NULL,'B078XYC6R3','https://m.media-amazon.com/images/I/71Yq16QeN2L._AC_UL320_.jpg',51975,4.7,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plackers-Micro-Dental-Floss-Picks/dp/B078XYC6R3/ref=sr_1_7?keywords=dental&qid=1703020352&sr=8-7',45,'2023-12-19 15:12:33.129039-06','2023-12-19 15:12:33.129039-06','www.amazon.com'),
+ (3393,'DenTek Professional Oral Care Kit, Advanced Clean- Portable, Multiple Tips, Dental Pick, Scaler, Stimulator, and Dental Mirror, White',NULL,'B07LGSYTLM','https://m.media-amazon.com/images/I/612eGtNOYqL._AC_UL320_.jpg',29572,4.5,'$6.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DenTek-Professional-Oral-Care-Kit/dp/B07LGSYTLM/ref=sr_1_8?keywords=dental&qid=1703020352&rdc=1&sr=8-8',45,'2023-12-19 15:12:33.136851-06','2023-12-19 15:12:33.136851-06','www.amazon.com'),
+ (3394,'Plackers Micro Line Dental Floss Picks, Fold-Out FlipPick, Tuffloss, Easy Storage with Sure-Zip Seal, Fresh Mint Flavor, 300 Count',NULL,'B085YL4HR7','https://m.media-amazon.com/images/I/71tvWE9UFWL._AC_UL320_.jpg',18069,4.7,'$7.68','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plackers-Flossers-Fold-Out-Toothpick-Tuffloss/dp/B085YL4HR7/ref=sr_1_10?keywords=dental&qid=1703020352&sr=8-10',45,'2023-12-19 15:12:33.144048-06','2023-12-19 15:12:33.144048-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3395,'Amazon Basics Mint Dental Flossers, 90 Count, 1 Pack (Previously Solimo)',NULL,'B08QWYMGRR','https://m.media-amazon.com/images/I/61Lu42O2+ML._AC_UL320_.jpg',14297,4.6,'$3.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjIwMDA1Mjg5NDI0ODUxMTo6MDo6&url=%2FAmazon-Basics-Dental-Flosses-Count%2Fdp%2FB08QWYMGRR%2Fref%3Dsr_1_11_ffob_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.151445-06','2023-12-19 15:12:33.151445-06','www.amazon.com'),
+ (4558,'4pcs Hair Tie Organizer,Portable Travel Qtip Holder,Bathroom Storage Organizer Qtip Dispenser Cotton Swabs Dispenser Kids Hair Accessory Box with Lid for Bathroom,Desktop Organizer (4 Pcs White)',NULL,'B0BZMJ33S4','https://m.media-amazon.com/images/I/71zmVid0nzL._AC_UL320_.jpg',64,4.4,'$13.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hair-Tie-Organizer-Dispenser-Accessory/dp/B0BZMJ33S4/ref=sr_1_54?keywords=travel+accessories&qid=1703020686&sr=8-54',57,'2023-12-19 15:18:07.896887-06','2023-12-19 15:18:07.896887-06','www.amazon.com'),
+ (3387,'Cocofloss Woven Dental Floss, Dentist-Designed Oral Care, Waxed, Vegan, Kid-Friendly, with Coconut Oil, 4-Pack of Mint, Coconut, Orange, Strawberry (33 yd Each)',NULL,'B0B64QN5NR','https://m.media-amazon.com/images/I/61RiWjVusBL._AC_UL320_.jpg',1325,4.6,'$36.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozOTk1NzQ3NzY4MDE0NzE3OjE3MDMwMjAzNTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE3Mjc2NTk1NzM5ODo6NDo6&url=%2FCOCOFLOSS-Coconut-Oil-Fragrances-Dentist-Designed-Cruelty-Free%2Fdp%2FB0B64QN5NR%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB0B64QN5NR%26pd_rd_r%3Db4082be5-3659-4c04-95e1-c9c990733d67%26pd_rd_w%3DnVgTD%26pd_rd_wg%3DkNaLO%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D6BDACS52YWZ77X2S2NB1%26qid%3D1703020352%26rdc%3D1%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:33.092209-06','2023-12-19 15:12:42.42729-06','www.amazon.com'),
+ (3509,'Wrangler Authentics',NULL,'B01L7B4VGY','https://m.media-amazon.com/images/I/61J2YWfGrXL._AC_UL320_.jpg',46816,4.6,'$30.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wrangler-Authentics-Quilted-Flannel-Eclipse/dp/B01L7B4VGY/ref=sr_1_9?keywords=men%27s+clothing&qid=1703020369&sr=8-9',46,'2023-12-19 15:12:50.833444-06','2023-12-19 15:12:50.833444-06','www.amazon.com'),
+ (3510,'Amazon Essentials',NULL,'B085YVCGDP','https://m.media-amazon.com/images/I/91mNiXLT64L._AC_UL320_.jpg',5210,4.5,'$23.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Long-Sleeve-Charcoal-Heather/dp/B085YVCGDP/ref=sr_1_10?keywords=men%27s+clothing&qid=1703020369&sr=8-10',46,'2023-12-19 15:12:50.840779-06','2023-12-19 15:12:50.840779-06','www.amazon.com'),
+ (3397,'COSLUS Water Dental Flosser Teeth Pick: Portable Cordless Oral Irrigator 300ML Rechargeable Travel Irrigation Cleaner IPX7 Waterproof Electric Waterflosser Flossing Machine for Teeth Cleaning F5020E',NULL,'B0BG52SJ5N','https://m.media-amazon.com/images/I/71Ya0PuPwzL._AC_UL320_.jpg',7588,4.4,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Water-Dental-Flosser-Teeth-Pick/dp/B0BG52SJ5N/ref=sr_1_13?keywords=dental&qid=1703020352&sr=8-13',45,'2023-12-19 15:12:33.165085-06','2023-12-19 15:12:33.165085-06','www.amazon.com'),
+ (3398,'DenTek Triple Clean Advanced Clean Floss Picks, No Break & No Shred Floss, 150 Count',NULL,'B003K01BMI','https://m.media-amazon.com/images/I/71DiH1kJ+yL._AC_UL320_.jpg',68568,4.7,'$3.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DenTek-Triple-Clean-Floss-Picks/dp/B003K01BMI/ref=sr_1_14?keywords=dental&qid=1703020352&sr=8-14',45,'2023-12-19 15:12:33.172579-06','2023-12-19 15:12:33.172579-06','www.amazon.com'),
+ (4559,'VENTURE 4TH Travel Money Belt - Slim Passport Holder RFID Blocking Travel Pouch to Protect Cash, Credit Cards and Travel Documents',NULL,'B00WBMQ89C','https://m.media-amazon.com/images/I/71b2k2fa30L._AC_UL320_.jpg',8878,4.5,'$21.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Minimalist-Design-Money-Blocking-Women/dp/B00WBMQ89C/ref=sr_1_55?keywords=travel+accessories&qid=1703020686&sr=8-55',57,'2023-12-19 15:18:07.901915-06','2023-12-19 15:18:07.901915-06','www.amazon.com'),
+ (3401,'Oral-B Glide Pro-Health Comfort Plus Dental Floss, Mint',NULL,'B07FLBBWJR','https://m.media-amazon.com/images/I/71yywhxAdzL._AC_UL320_.jpg',15666,4.8,'$9.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-B-Glide-Pro-Health-Comfort-Dental/dp/B07FLBBWJR/ref=sr_1_16?keywords=dental&qid=1703020352&sr=8-16',45,'2023-12-19 15:12:33.193609-06','2023-12-19 15:12:33.193609-06','www.amazon.com'),
+ (3402,'H2ofloss® Dental Water Flosser for Teeth Cleaning with 12 Multifunctional Tips&800ml Capacity, Professional Countertop Oral Irrigator Quiet Design(HF-9)',NULL,'B010NNIZQE','https://m.media-amazon.com/images/I/71Gqix5LAJL._AC_UL320_.jpg',15647,4.3,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjMwMDAxMjcxODE3NDcwMjo6MDo6&url=%2FH2ofloss-Multifunctional-Professional-Countertop-Irrigator%2Fdp%2FB010NNIZQE%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.200493-06','2023-12-19 15:12:33.200493-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3403,'FAMILIFE Floss Picks, 240 Count Mint Dental Floss Picks, Tooth Picks Flossers with 4 Travel Handy Cases, Helps to Fight Tooth Decay and Keep Your Teeth Clean, Floss Sticks for Family',NULL,'B075RXXKFQ','https://m.media-amazon.com/images/I/71AA06ctzEL._AC_UL320_.jpg',3307,4.6,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjIwMDEzMjI4NDA2NDM5ODo6MDo6&url=%2FFAMILIFE-Dental-Travel-Counts-Flossers%2Fdp%2FB075RXXKFQ%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26rdc%3D1%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.207583-06','2023-12-19 15:12:33.207583-06','www.amazon.com'),
+ (3400,'Plaque/Tartar Remover for Teeth, Dental Calculus Remover Teeth Cleaning Kit with LED Light & 5 Adjustable Modes',NULL,'B0B8H6LWRQ','https://m.media-amazon.com/images/I/71Cxz23-i7L._AC_UL320_.jpg',3046,4.4,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plaque-Remover-Calculus-Cleaning-Adjustable/dp/B0B8H6LWRQ/ref=sr_1_15?keywords=dental&qid=1703020352&sr=8-15',45,'2023-12-19 15:12:33.187096-06','2023-12-19 15:12:33.213986-06','www.amazon.com'),
+ (3404,'Oral-B Complete Glide Floss Picks, Scope Outlast, 75-ct',NULL,'B00UB7BO16','https://m.media-amazon.com/images/I/6188pq9210L._AC_UL320_.jpg',4819,4.6,'$3.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-B-Glide-Complete-Outlast-Dental/dp/B00UB7BO16/ref=sr_1_21?keywords=dental&qid=1703020352&sr=8-21',45,'2023-12-19 15:12:33.222686-06','2023-12-19 15:12:33.222686-06','www.amazon.com'),
+ (3405,'DenTek Mouth Guard for Nighttime Teeth Grinding, Professional-Fit Dental Guard, 1 Count',NULL,'B008YEMVSI','https://m.media-amazon.com/images/I/71rdf467R4L._AC_UL320_.jpg',16946,3.9,'$18.23','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DenTek-Professional-Fit-Protection-Nightime-Packaging/dp/B008YEMVSI/ref=sr_1_22?keywords=dental&qid=1703020352&rdc=1&sr=8-22',45,'2023-12-19 15:12:33.229387-06','2023-12-19 15:12:33.229387-06','www.amazon.com'),
+ (3526,'Hanes',NULL,'B010277HJW','https://m.media-amazon.com/images/I/61Mup1lPC8L._AC_UL320_.jpg',81796,4.5,'$12.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Long-Sleeve-Beefy-Henley-T-Shirt/dp/B010277HJW/ref=sr_1_25?keywords=men%27s+clothing&qid=1703020369&sr=8-25',46,'2023-12-19 15:12:50.969891-06','2023-12-19 15:12:50.969891-06','www.amazon.com'),
+ (3527,'Amazon Essentials',NULL,'B079RPS46G','https://m.media-amazon.com/images/I/81IeHROT22L._AC_UL320_.jpg',23748,4.5,'$21.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-V-Neck-Sweater-Heather/dp/B079RPS46G/ref=sr_1_26?keywords=men%27s+clothing&qid=1703020369&sr=8-26',46,'2023-12-19 15:12:50.976383-06','2023-12-19 15:12:50.976383-06','www.amazon.com'),
+ (4560,'Hair Tools Travel Bag and Heat Resistant Mat for Flat Irons, Straighteners, Curling Iron, and Haircare Accessories, 2-in-1 design, with Interior Pockets, Portable Organizer, Neoprene (Black)',NULL,'B0BS3GBLNY','https://m.media-amazon.com/images/I/71W0TYBZmXL._AC_UL320_.jpg',272,4.5,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Resistant-Straighteners-Haircare-Accessories-Organizer/dp/B0BS3GBLNY/ref=sr_1_56?keywords=travel+accessories&qid=1703020686&sr=8-56',57,'2023-12-19 15:18:07.908146-06','2023-12-19 15:18:07.908146-06','www.amazon.com'),
+ (3406,'Dental Tools, 6 Pack Teeth Cleaning Tools Stainless Steel Dental Scraper, Pick Hygiene Set with Mouth Mirror, Tweezer Kit for Dentist, Personal Using, Pets - Tooth Tartar Plaque Scraper Remover',NULL,'B08PD99T5H','https://m.media-amazon.com/images/I/71OPYgB933S._AC_UL320_.jpg',3699,4.5,'$6.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cleaning-Stainless-Scraper-Hygiene-Personal/dp/B08PD99T5H/ref=sr_1_23?keywords=dental&qid=1703020352&sr=8-23',45,'2023-12-19 15:12:33.23672-06','2023-12-19 15:12:33.23672-06','www.amazon.com'),
+ (3396,'Plaque Remover for Teeth - Tartar Remover for Teeth, Dental Calculus Remover Teeth Cleaning Kit',NULL,'B0BK8WN8QK','https://m.media-amazon.com/images/I/719IMDQ-zlL._AC_UL320_.jpg',1315,4.5,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjMwMDA1MzI4NzAwMzEwMjo6MDo6&url=%2FPlaque-Remover-Teeth-Calculus-Cleaning%2Fdp%2FB0BK8WN8QK%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.15834-06','2023-12-19 15:12:33.243821-06','www.amazon.com'),
+ (3407,'ducalmoral Dental Implant Prosthetic Universal Wrench kit 10-70NCM Ratchet Drivers Dental Implant Repair Tool Kits Wrench Kit With Drivers Hand Use (16 Drivers B Type)',NULL,'B0BJ2638PW','https://m.media-amazon.com/images/I/51y6wfWbdEL._AC_UL320_.jpg',8,4.4,'$159.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjIwMDEyMDk2ODM2NzM5ODo6MDo6&url=%2Fducalmoral-Implant-Prosthetic-Universal-10-70NCM%2Fdp%2FB0BJ2638PW%2Fref%3Dsr_1_25_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-25-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.251964-06','2023-12-19 15:12:33.251964-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4561,'LIV3D Travel Belt for Luggage - Adjustable and Trendy - Luggage Strap for Bag Attachment Carrying Bag - Effortless Travel - Travel Smarter with Airport, Train Travel Accessories',NULL,'B0CJRK92HT','https://m.media-amazon.com/images/I/71Z+b+IHjAL._AC_UL320_.jpg',44,4.7,'$17.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LIV3D-Travel-Belt-Luggage-Accessories/dp/B0CJRK92HT/ref=sr_1_57?keywords=travel+accessories&qid=1703020686&sr=8-57',57,'2023-12-19 15:18:07.913397-06','2023-12-19 15:18:07.913397-06','www.amazon.com'),
+ (3409,'Dental Mirror Stainless Steel with Handle 6.5", Dentist Tool for Teeth Cleaning Plaque, Mouth Inspection, Lash Extension Mirror, Eyelash Extensions Dental Mirror Inspect Instrument Makeup - Pack of 2',NULL,'B09JFLLTVX','https://m.media-amazon.com/images/I/71Gh1DmOrgL._AC_UL320_.jpg',624,4.3,'$6.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjIwMDAyNjkxMDY2MzY5ODo6MDo6&url=%2FStainless-Inspection-Extension-Extensions-Instrument%2Fdp%2FB09JFLLTVX%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.265586-06','2023-12-19 15:12:33.265586-06','www.amazon.com'),
+ (3410,'Dental Anatomy Coloring Book: Fun and Easy Adult Coloring Book for Dental Assistants, Dental Students, Dental Hygienists, Dental Therapists, Periodontists and Dentists. Essential of Dental Assisting.',NULL,'B08NVVWGDM','https://m.media-amazon.com/images/I/71FtJYcfQaL._AC_UL320_.jpg',13,3.7,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Anatomy-Coloring-Book-Periodontists/dp/B08NVVWGDM/ref=sr_1_28?keywords=dental&qid=1703020352&sr=8-28',45,'2023-12-19 15:12:33.272627-06','2023-12-19 15:12:33.272627-06','www.amazon.com'),
+ (3411,'Plackers Twin-Line Dental Flossers, Cool Mint Flavor, Dual Action Flossing System, Easy Storage, Super Tuffloss, 2X The Clean, 75 Count',NULL,'B003N2DXPG','https://m.media-amazon.com/images/I/71NI64ESUEL._AC_UL320_.jpg',29246,4.7,'$2.42','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plackers-Twin-Line-Dental-Floss-Picks/dp/B003N2DXPG/ref=sr_1_29?keywords=dental&qid=1703020352&sr=8-29',45,'2023-12-19 15:12:33.279123-06','2023-12-19 15:12:33.279123-06','www.amazon.com'),
+ (3412,'PEDIGREE DENTASTIX Large Dog Dental Treats Original Flavor Dental Bones, 1.66 lb. Pack (32 Treats)',NULL,'B0042GLVDI','https://m.media-amazon.com/images/I/81KzjTyldcL._AC_UL320_.jpg',43181,4.8,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pedigree-Dentastix-Halloween-Dental-Original/dp/B0042GLVDI/ref=sr_1_30?keywords=dental&qid=1703020352&sr=8-30',45,'2023-12-19 15:12:33.287682-06','2023-12-19 15:12:33.287682-06','www.amazon.com'),
+ (3413,'Dental Tools, Dental Pick, Plaque Remover [6 Pack] for Teeth Cleaning Kit , Tooth Cleaner, Tartar Remover - Dentist Kit',NULL,'B0BNM3KPFH','https://m.media-amazon.com/images/I/81Rmdh9n9gL._AC_UL320_.jpg',1242,4.6,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Plaque-Remover-Cleaning-Cleaner/dp/B0BNM3KPFH/ref=sr_1_31?keywords=dental&qid=1703020352&sr=8-31',45,'2023-12-19 15:12:33.295005-06','2023-12-19 15:12:33.295005-06','www.amazon.com'),
+ (3414,'Reach Waxed Dental Floss | Effective Plaque Removal, Extra Wide Cleaning Surface | Shred Resistance & Tension, Slides Smoothly & Easily , PFAS FREE | Mint Flavored, 55 Yards, 1 Pack',NULL,'B013OKRGWW','https://m.media-amazon.com/images/I/71TQAj9zjOL._AC_UL320_.jpg',4796,4.7,'$0.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reach-Dental-Plaque-Removal-Refreshing/dp/B013OKRGWW/ref=sr_1_32?keywords=dental&qid=1703020352&sr=8-32',45,'2023-12-19 15:12:33.302903-06','2023-12-19 15:12:33.302903-06','www.amazon.com'),
+ (3417,'Oral-B Statin Tape Dental Floss 25m (12 Units) by Oral-B Satin Tape Mint',NULL,'B013L7GNQI','https://m.media-amazon.com/images/I/71-hwVX0gyL._AC_UL320_.jpg',2020,4.7,'$21.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-B-Statin-Dental-Floss-Units/dp/B013L7GNQI/ref=sr_1_35?keywords=dental&qid=1703020352&sr=8-35',45,'2023-12-19 15:12:33.324798-06','2023-12-19 15:12:33.324798-06','www.amazon.com'),
+ (3418,'ffresiss Dental Mirror with Light,Teeth Inspection LED Mirror,Anti-Fog Mouth Mirror,Dentist Oral Care Tool',NULL,'B08GSQWY5S','https://m.media-amazon.com/images/I/41pnRyr7qLL._AC_UL320_.jpg',3943,4.5,'$9.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ffresiss-Dental-Inspection-Anti-Fog-Dentist/dp/B08GSQWY5S/ref=sr_1_36?keywords=dental&qid=1703020352&sr=8-36',45,'2023-12-19 15:12:33.331947-06','2023-12-19 15:12:33.331947-06','www.amazon.com'),
+ (3419,'Virbac CET Veggiedent FR3SH Tartar Control Chews for Dogs, Medium (Pack of 30)Beef,1.6 pounds',NULL,'B07FJQYVZ6','https://m.media-amazon.com/images/I/81rRmTjm5GL._AC_UL320_.jpg',10015,4.7,'$29.57','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Virbac-VEGGIEDENT-Control-Healthy-Solution/dp/B07FJQYVZ6/ref=sr_1_38?keywords=dental&qid=1703020352&sr=8-38',45,'2023-12-19 15:12:33.339026-06','2023-12-19 15:12:33.339026-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3420,'FELINE GREENIES Natural Dental Care Cat Treats Savory Salmon Flavor, 21 oz. Tub',NULL,'B07C3F891B','https://m.media-amazon.com/images/I/817aHDDiBBL._AC_UL320_.jpg',60056,4.8,'$22.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FELINE-GREENIES-Dental-Natural-Treats/dp/B07C3F891B/ref=sr_1_39?keywords=dental&qid=1703020352&sr=8-39',45,'2023-12-19 15:12:33.34523-06','2023-12-19 15:12:33.34523-06','www.amazon.com'),
+ (3421,'Ark Naturals Brushless Toothpaste, Dog Dental Chews for Small Breeds, Freshens Breath, Helps Reduce Plaque & Tartar, 12oz, 1 Pack',NULL,'B00626UCAY','https://m.media-amazon.com/images/I/71bj1TCVUCL._AC_UL320_.jpg',14750,4.2,'$11.87','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Naturals-Breath-less-Brushless-Toothpaste-Recommended/dp/B00626UCAY/ref=sr_1_40?keywords=dental&qid=1703020352&sr=8-40',45,'2023-12-19 15:12:33.351435-06','2023-12-19 15:12:33.351435-06','www.amazon.com'),
+ (3408,'Ultrassist Transparent Disease Teeth Model with Dental Implant Bridge, Dental Model for Patient and Dental Student Education',NULL,'B095NVLS4Z','https://m.media-amazon.com/images/I/61v4KxSONWL._AC_UL320_.jpg',22,4.1,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMjM2NTQ0NjgyNjE2NzE3OjE3MDMwMjAzNTI6c3BfbXRmOjIwMDA2MTE0MjgyMjg5ODo6MDo6&url=%2FUltrassist-Transparent-Disease-Teeth-Model%2Fdp%2FB095NVLS4Z%2Fref%3Dsr_1_26_sspa%3Fkeywords%3Ddental%26qid%3D1703020352%26sr%3D8-26-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:33.258942-06','2023-12-19 15:12:33.358225-06','www.amazon.com'),
+ (3422,'Dental Gift - Tooth Journal: dentist gift, dental hygenist gift, dental assistant gift, dental hygienist gift, dental hygiene gift, dental technician ... gift, dental notebook, dental journal',NULL,'1687225206','https://m.media-amazon.com/images/I/51COepJSofL._AC_UL320_.jpg',41,4.5,'$7.24','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Gift-assistant-hygienist-technician/dp/1687225206/ref=sr_1_42?keywords=dental&qid=1703020352&sr=8-42',45,'2023-12-19 15:12:33.364493-06','2023-12-19 15:12:33.364493-06','www.amazon.com'),
+ (3423,'Amazon Basics - Dental Flossers Fold-Away Pick ,Helps Remove Plaque, Mint Flavor, 540 Count (6 Packs of 90), (Previously Solimo)',NULL,'B08QWZ3Q41','https://m.media-amazon.com/images/I/61sV4bfnJsL._AC_UL320_.jpg',14297,4.6,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Basics-Dental-Flosses-Count/dp/B08QWZ3Q41/ref=sr_1_43?keywords=dental&qid=1703020352&sr=8-43',45,'2023-12-19 15:12:33.371869-06','2023-12-19 15:12:33.371869-06','www.amazon.com'),
+ (3424,'GUM Soft-Picks Advanced, Easy to Use Dental Picks for Teeth Cleaning and Gum Health, Disposable Interdental Brushes with Convenient Carry Case, Dentist Recommended Dental Floss Picks, 90ct (4pk)',NULL,'B07B91ZQ49','https://m.media-amazon.com/images/I/5149fxCE2DL._AC_UL320_.jpg',1537,4.8,'$38.03','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Soft-Picks-Dental-Picks-Advanced-Count/dp/B07B91ZQ49/ref=sr_1_44?keywords=dental&qid=1703020352&sr=8-44',45,'2023-12-19 15:12:33.378728-06','2023-12-19 15:12:33.378728-06','www.amazon.com'),
+ (3425,'GREENIES Original Large Natural Dog Dental Care Chews Oral Health Dog Treats, 36 oz. Pack (24 Treats)',NULL,'B006W6YHV4','https://m.media-amazon.com/images/I/81R+GPsYs+L._AC_UL320_.jpg',76868,4.8,'$37.56','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Greenies-Original-Dental-Treats-Holiday/dp/B006W6YHV4/ref=sr_1_45?keywords=dental&qid=1703020352&sr=8-45',45,'2023-12-19 15:12:33.386592-06','2023-12-19 15:12:33.386592-06','www.amazon.com'),
+ (3426,'Polident 3 Minute Denture Cleanser Tablets - 120 Count',NULL,'B000GGKPWQ','https://m.media-amazon.com/images/I/812Ka-+jNtL._AC_UL320_.jpg',21885,4.8,'$6.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Polident-Antibacterial-Denture-Cleanser-Effervescent/dp/B000GGKPWQ/ref=sr_1_46?keywords=dental&qid=1703020352&sr=8-46',45,'2023-12-19 15:12:33.393582-06','2023-12-19 15:12:33.393582-06','www.amazon.com'),
+ (3427,'GUM - 10070942002438 Proxabrush Go-Betweens Interdental Brushes, Ultra Tight, Plaque Removal, 10 Count, (Pack of 6)',NULL,'B07KQBJ1V5','https://m.media-amazon.com/images/I/71bb30pzTuL._AC_UL320_.jpg',3462,4.7,'$20.34','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GUM-Proxabrush-Go-Betweens-Interdental-Brushes/dp/B07KQBJ1V5/ref=sr_1_47?keywords=dental&qid=1703020352&sr=8-47',45,'2023-12-19 15:12:33.401888-06','2023-12-19 15:12:33.401888-06','www.amazon.com'),
+ (3428,'Milk-Bone Original Brushing Chews, 6 Large Daily Dental Dog Treats (Pack of 5)',NULL,'B07MNTFRFL','https://m.media-amazon.com/images/I/81DxC0THtTL._AC_UL320_.jpg',11127,4.7,'$26.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Milk-Bone-Brushing-Chews-Dental-Treats/dp/B07MNTFRFL/ref=sr_1_48?keywords=dental&qid=1703020352&sr=8-48',45,'2023-12-19 15:12:33.408776-06','2023-12-19 15:12:33.408776-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3429,'Anbesol Maximum Strength Oral Anesthetic Liquid - 0.41 fl oz (Packaging May Vary)',NULL,'B0BQN9RNY5','https://m.media-amazon.com/images/I/816SaOH2RiL._AC_UL320_.jpg',723,4.6,'$6.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Anbesol-Maximum-Strength-Anesthetic-Liquid/dp/B0BQN9RNY5/ref=sr_1_49?keywords=dental&qid=1703020352&rdc=1&sr=8-49',45,'2023-12-19 15:12:33.415403-06','2023-12-19 15:12:33.415403-06','www.amazon.com'),
+ (3430,'GUM - 6324A Soft-Picks Original Dental Picks, 320 Count',NULL,'B06XQSG36Q','https://m.media-amazon.com/images/I/712DwRhg8aL._AC_UL320_.jpg',11325,4.7,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GUM-Soft-Picks-Original-Dental-Picks/dp/B06XQSG36Q/ref=sr_1_50?keywords=dental&qid=1703020352&sr=8-50',45,'2023-12-19 15:12:33.423395-06','2023-12-19 15:12:33.423395-06','www.amazon.com'),
+ (3431,'Johnson & Johnson Reach Mint Waxed Dental Floss, 5 Count',NULL,'B00FZNMHZS','https://m.media-amazon.com/images/I/71VeX+GALyL._AC_UL320_.jpg',6921,4.7,'$9.87','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Johnson-Reach-Waxed-Dental-Floss/dp/B00FZNMHZS/ref=sr_1_51?keywords=dental&qid=1703020352&sr=8-51',45,'2023-12-19 15:12:33.429984-06','2023-12-19 15:12:33.429984-06','www.amazon.com'),
+ (3345,'GREENIES Original TEENIE Natural Dog Dental Care Chews Oral Health Dog Treats, 36 oz. Pack (130 Treats)',NULL,'B006W6YHYQ','https://m.media-amazon.com/images/I/91WYcbT7uQL._AC_UL320_.jpg',68103,4.8,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Greenies-Original-Teenie-Dental-Holiday/dp/B006W6YHYQ/ref=sr_1_62?keywords=health&qid=1703020344&sr=8-62',44,'2023-12-19 15:12:27.078732-06','2023-12-19 15:12:33.437441-06','www.amazon.com'),
+ (3432,'Dental Fresh Advanced Plaque and Tartar Water Additive, 17oz – Dog Teeth Cleaning Formula to Freshen Breath and Improve Overall Oral Health',NULL,'B0006DQHQM','https://m.media-amazon.com/images/I/71sghJOu2ML._AC_UL320_.jpg',21144,4.3,'$10.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Fresh-Water-Additive-Clinically/dp/B0006DQHQM/ref=sr_1_53?keywords=dental&qid=1703020352&sr=8-53',45,'2023-12-19 15:12:33.443978-06','2023-12-19 15:12:33.443978-06','www.amazon.com'),
+ (3433,'Oral-B Glide Pro-Health Dental Floss, Deep Clean, Mint, 40m, Pack of 6',NULL,'B01KZOTTSO','https://m.media-amazon.com/images/I/61xcsiSxu4L._AC_UL320_.jpg',23973,4.8,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Glide-Oral-B-Pro-Health-Clean-Floss/dp/B01KZOTTSO/ref=sr_1_54?keywords=dental&qid=1703020352&sr=8-54',45,'2023-12-19 15:12:33.450457-06','2023-12-19 15:12:33.450457-06','www.amazon.com'),
+ (3434,'GUM Soft-Picks Advanced, Easy to Use Dental Picks for Teeth Cleaning and Gum Health, Disposable Interdental Brushes with Convenient Carry Case, Dentist Recommended Dental Floss Picks, 90ct (3pk)',NULL,'B07GHFTKT4','https://m.media-amazon.com/images/I/81WJ7GCQl-L._AC_UL320_.jpg',10200,4.7,'$24.23','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sunstar-6505A-Soft-Picks-Advanced-Pack/dp/B07GHFTKT4/ref=sr_1_56?keywords=dental&qid=1703020352&sr=8-56',45,'2023-12-19 15:12:33.458475-06','2023-12-19 15:12:33.458475-06','www.amazon.com'),
+ (3435,'TANAVE Plaque Remover for Teeth, Teeth Cleaning Kit with Ultrasonic Tooth Cleaner and Dental Tools, Dental Picks for Teeth Cleaning and Rechargeable Plaque Blaster with LED, Tartar Remover, 4 Heads',NULL,'B0BR3K5LT3','https://m.media-amazon.com/images/I/716XBzLWcLL._AC_UL320_.jpg',811,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TANAVE-Cleaning-Ultrasonic-Rechargeable-Portable/dp/B0BR3K5LT3/ref=sr_1_57?keywords=dental&qid=1703020352&sr=8-57',45,'2023-12-19 15:12:33.465704-06','2023-12-19 15:12:33.465704-06','www.amazon.com'),
+ (3436,'GuruNanda Dental Mint Floss Picks - Non- Shred Thread with Angled Pick for Effective Plaque Removal - Dentist Recommened - Travel Friendly for Adults & Kids - 100 Pack',NULL,'B0CGRTY1GW','https://m.media-amazon.com/images/I/71hqnhzEjXL._AC_UL320_.jpg',53,4.2,'$1.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GuruNanda-Dental-Mint-Floss-Picks/dp/B0CGRTY1GW/ref=sr_1_59?keywords=dental&qid=1703020352&sr=8-59',45,'2023-12-19 15:12:33.47358-06','2023-12-19 15:12:33.47358-06','www.amazon.com'),
+ (3437,'Disposable Dental Bibs 13"x18" - 3 Ply Waterproof Tattoo Bib Sheet for Patients - Dentist or Medical Tray Cover and Nail Table Cover Supplies, Black',NULL,'B07HLDFCSX','https://m.media-amazon.com/images/I/61VmxIytcnL._AC_UL320_.jpg',9516,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Disposable-Piercing-Waterproof-Patient-Measuring/dp/B07HLDFCSX/ref=sr_1_60?keywords=dental&qid=1703020352&sr=8-60',45,'2023-12-19 15:12:33.480852-06','2023-12-19 15:12:33.480852-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3451,'Fixodent Complete Original Denture Adhesive Cream, 2.4 Ounce (Pack of 3)',NULL,'B07FL52N66','https://m.media-amazon.com/images/I/61hr9OnQRUL._AC_UL320_.jpg',11185,4.7,'$14.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fixodent-Complete-Original-Denture-Adhesive/dp/B07FL52N66/ref=sr_1_59?keywords=dental&qid=1703020360&sr=8-59',45,'2023-12-19 15:12:42.105652-06','2023-12-19 15:12:42.105652-06','www.amazon.com'),
+ (3399,'BASIC CONCEPTS Tongue Scraper for Adults (2 Pack), Reduce Bad Breath (Travel Cases Included), Stainless Steel Tongue Cleaners, 100% Metal Tongue Scraper with Case Fresh Breath Tongue Cleaner Oral',NULL,'B07QRX886L','https://aax-us-iad.amazon.com/e/loi/imp?b=JPiduN6ezNUHOnm7HV6Qwd4AAAGMg-xSngEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICDVpAON',100106,4.6,'$9.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RIJbauAC73NMIF3qwGU2mG0AAAGMg-xSUAEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICBMh40v/https://www.amazon.com/Tongue-Scraper-Adults-Cleaner-Metal-Tounge-Scrapper/dp/B07QRX886L/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=dental&keywords=dental&pd_rd_i=B07QRX886L&pd_rd_r=b4082be5-3659-4c04-95e1-c9c990733d67&pd_rd_w=u4dfD&pd_rd_wg=kNaLO&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=6BDACS52YWZ77X2S2NB1&qid=1703020352&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',45,'2023-12-19 15:12:33.179048-06','2023-12-19 15:12:33.488318-06','www.amazon.comhttps:'),
+ (3438,'Water Dental Flosser Cordless with Magnetic Charging for Teeth Cleaning, Nursal 7 Clean Settings Portable Rechargeable Oral Irrigator, IPX8 Waterproof Water Dental Picks for Home Travel',NULL,'B0BVBJ75W2','https://m.media-amazon.com/images/I/71NTPyO7BnL._AC_UL320_.jpg',341,4.3,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfYXRmX25leHQ6MzAwMDE3ODYzNjkxMDAyOjowOjo&url=%2FCordless-Magnetic-Rechargeable-Irrigator-Waterproof%2Fdp%2FB0BVBJ75W2%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',45,'2023-12-19 15:12:41.978939-06','2023-12-19 15:12:41.978939-06','www.amazon.com'),
+ (3440,'JS Dental Lab Night Guard for Teeth Grinding and Clenching - One Unit for Upper or Lower Teeth',NULL,'B07X8DXZFR','https://m.media-amazon.com/images/I/51OjOrrKjaL._AC_UL320_.jpg',496,4.5,'$139.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfYXRmX25leHQ6MjAwMTIzNjgwMzg4MDk4OjowOjo&url=%2FDental-Lab-Night-Grinding-Bruxism%2Fdp%2FB07X8DXZFR%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',45,'2023-12-19 15:12:42.009631-06','2023-12-19 15:12:42.009631-06','www.amazon.com'),
+ (3441,'Arm & Hammer Complete Care Fresh Dental Water Additive for Dogs and Cats - Dog Water Additive, Dog Mouth Wash, Dog Dental Rinse, PetWater Additive, Cat Dental Care Bad Breath, Cat Supplies',NULL,'B08QJMZPNH','https://m.media-amazon.com/images/I/719JYF6FWZL._AC_UL320_.jpg',2564,4.3,'$6.31','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Arm-Hammer-Complete-Flavorless-Brushless/dp/B08QJMZPNH/ref=sr_1_53?keywords=dental&qid=1703020360&sr=8-53',45,'2023-12-19 15:12:42.016093-06','2023-12-19 15:12:42.016093-06','www.amazon.com'),
+ (3442,'20 Pcs Dental Resin Fiber Post & 4 Tools Screw Glass Endo Thread 1.0/1.2/1.4/1.6MM',NULL,'B0B993Z974','https://m.media-amazon.com/images/I/51yG4Wf4tPL._AC_UL320_.jpg',8,5.0,'$19.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Resin-Fiber-Drills-Thread/dp/B0B993Z974/ref=sr_1_54?keywords=dental&qid=1703020360&sr=8-54',45,'2023-12-19 15:12:42.02346-06','2023-12-19 15:12:42.02346-06','www.amazon.com'),
+ (3443,'Vet''s Best Dental Care Finger Wipes - Reduces Plaque & Freshens Breath - Teeth Cleaning Finger Wipes for Dogs & Cats - 50 Count',NULL,'B08T23MHWX','https://m.media-amazon.com/images/I/71ZlhGsDyqL._AC_UL320_.jpg',5487,4.3,'$11.63','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vets-Best-Freshens-Cleaning-Disposable/dp/B08T23MHWX/ref=sr_1_55?keywords=dental&qid=1703020360&sr=8-55',45,'2023-12-19 15:12:42.029687-06','2023-12-19 15:12:42.029687-06','www.amazon.com'),
+ (4513,'riemot Luggage Travel Cup Holder Free Hand Drink Carrier - Hold Two Coffee Mugs - Fits Roll on Suitcase Handles - Gifts for Flight Attendants Travelers Accessories',NULL,'B07TXCCQGP','https://m.media-amazon.com/images/I/71DWCLPKJPL._AC_UL320_.jpg',6161,4.5,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/riemot-Luggage-Travel-Holder-Drink/dp/B07TXCCQGP/ref=sr_1_15?keywords=travel+accessories&qid=1703020679&sr=8-15',57,'2023-12-19 15:18:00.507939-06','2023-12-19 15:18:07.918644-06','www.amazon.com'),
+ (3439,'Water Flosser, Mornwell Water Flossers for Teeth - 330ML Tank USB Rechargeable Dental Flosser, IPX7 Waterproof 3 Modes & 4 Jet Tips Portable Dental Oral Irrigator,Professional Water Flosser',NULL,'B08TWRPDQ4','https://m.media-amazon.com/images/I/71gUxSosOLL._AC_UL320_.jpg',2490,4.4,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfYXRmX25leHQ6MjAwMTE0NzkxNjE2MDk4OjowOjo&url=%2FMornwell-Cordless-Capacity-Rechargeable-Waterproof%2Fdp%2FB08TWRPDQ4%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',45,'2023-12-19 15:12:42.001608-06','2023-12-19 15:12:42.073943-06','www.amazon.com'),
+ (3452,'Dentalife DentaLife Made in USA Facilities Toy Breed Dog Dental Chews, Daily Mini - 58 ct. Pouch',NULL,'B01EYAQXJ8','https://m.media-amazon.com/images/I/81pMUc4Fe8L._AC_UL320_.jpg',8273,4.7,'$10.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Purina-Dentalife-Daily-Oral-Treats/dp/B01EYAQXJ8/ref=sr_1_60?keywords=dental&qid=1703020360&sr=8-60',45,'2023-12-19 15:12:42.11379-06','2023-12-19 15:12:42.11379-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3444,'Hangsun Water Flossers Professional for Teeth Cordless Portable Dental Oral Irrigator HOC760 300ML Rechargeable IPX7 Waterproof Water Teeth Cleaner Picks for Home Travel with 8 Jet Tips',NULL,'B0BLVM69CW','https://m.media-amazon.com/images/I/71v+ehYT48L._AC_UL320_.jpg',5795,4.4,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDgwMzM2NDA2NTkwNzE3OjE3MDMwMjAzNjA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5ODg2MjU2OTgwMjo6MDo6&url=%2FHangsun-Professional-HOC760-Rechargeable-Waterproof%2Fdp%2FB0BLVM69CW%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB0BLVM69CW%26pd_rd_r%3D095a232b-6501-4dc9-8a20-260beeb8a18b%26pd_rd_w%3DYev3x%26pd_rd_wg%3DNHEcB%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D38F7DVYQ8SPJY0SR99Z8%26qid%3D1703020360%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:42.044809-06','2023-12-19 15:12:42.044809-06','www.amazon.com'),
+ (3445,'Cordless Water Dental Flosser-H2ofloss Portable Oral Irrigator for Teeth Cleaning,Rechargeable Water Dental Picks with 5 Modes, IPX7 Waterproof and Powerful Battery for Home Travel Black',NULL,'B09DSYFKN3','https://m.media-amazon.com/images/I/712dzzfge4L._AC_UL320_.jpg',1062,4.2,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDgwMzM2NDA2NTkwNzE3OjE3MDMwMjAzNjA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE0MjQ0NDg2NTc5ODo6MTo6&url=%2FH2ofloss-Cordless-Rechargeable-IPX7Waterproof-Irrigator%2Fdp%2FB09DSYFKN3%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB09DSYFKN3%26pd_rd_r%3D095a232b-6501-4dc9-8a20-260beeb8a18b%26pd_rd_w%3DYev3x%26pd_rd_wg%3DNHEcB%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D38F7DVYQ8SPJY0SR99Z8%26qid%3D1703020360%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-50-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:42.050699-06','2023-12-19 15:12:42.050699-06','www.amazon.com'),
+ (3446,'FAMILIFE Floss Picks, 200 Count Unflavored Dental Floss Picks, Tooth Picks Flossers with 4 Travel Handy Cases, Helps to Fight Tooth Decay and Keep Your Teeth Clean, Floss Sticks for Family',NULL,'B0CK1V8WKV','https://m.media-amazon.com/images/I/71Fs8+pHcqL._AC_UL320_.jpg',3307,4.6,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDgwMzM2NDA2NTkwNzE3OjE3MDMwMjAzNjA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA4MjU2MDg3MTQwMjo6Mjo6&url=%2FFAMILIFE-Unflavored-Dental-Flossers-Travel%2Fdp%2FB0CK1V8WKV%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB0CK1V8WKV%26pd_rd_r%3D095a232b-6501-4dc9-8a20-260beeb8a18b%26pd_rd_w%3DYev3x%26pd_rd_wg%3DNHEcB%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D38F7DVYQ8SPJY0SR99Z8%26qid%3D1703020360%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:42.056619-06','2023-12-19 15:12:42.056619-06','www.amazon.com'),
+ (3447,'Dental Tools, 10 Pack Stainless Steel Plaque Remover Teeth Cleaning Tools Set, Oral Care Hygiene Kit with Meta Plaque Cleaner, Tartar Picks, Tooth, Tongue Scraper for Dentist, Personal, Family',NULL,'B09WCYDDLS','https://m.media-amazon.com/images/I/81ZnOoWiCqL._AC_UL320_.jpg',1431,4.6,'$9.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDgwMzM2NDA2NTkwNzE3OjE3MDMwMjAzNjA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA1OTI4NjMzNTY5ODo6Mzo6&url=%2FStainless-Remover-Cleaning-Hygiene-Personal%2Fdp%2FB09WCYDDLS%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB09WCYDDLS%26pd_rd_r%3D095a232b-6501-4dc9-8a20-260beeb8a18b%26pd_rd_w%3DYev3x%26pd_rd_wg%3DNHEcB%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D38F7DVYQ8SPJY0SR99Z8%26qid%3D1703020360%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:42.066705-06','2023-12-19 15:12:42.066705-06','www.amazon.com'),
+ (3448,'Minties Dental Chews for Dogs, Vet-Recommended Mint-Flavored Dental Treats for Tiny/Small Dogs 5-39 lbs, Dental Bones Clean Teeth, Fight Bad Breath, and Removes Plaque and Tartar, 40 Count',NULL,'B076YLYVW8','https://m.media-amazon.com/images/I/81a6BKcviML._AC_UL320_.jpg',27202,4.5,'$9.94','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mintes-Dental-Vet-Recommended-Mint-Flavored-Removes/dp/B076YLYVW8/ref=sr_1_56?keywords=dental&qid=1703020360&sr=8-56',45,'2023-12-19 15:12:42.081014-06','2023-12-19 15:12:42.081014-06','www.amazon.com'),
+ (3449,'Dingo Tartar And Breath Dental Sticks For All Dogs, 48-Count',NULL,'B0075WQMOO','https://m.media-amazon.com/images/I/81OND81yaPL._AC_UL320_.jpg',8385,4.5,'$8.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dingo-Tartar-Breath-Dental-48-Count/dp/B0075WQMOO/ref=sr_1_57?keywords=dental&qid=1703020360&sr=8-57',45,'2023-12-19 15:12:42.091162-06','2023-12-19 15:12:42.091162-06','www.amazon.com'),
+ (3450,'Virbac CET Enzymatic Oral Hygiene Chews for Dogs, beef ,12.8 oz',NULL,'B0812LTR6B','https://m.media-amazon.com/images/I/71QVOJWorPL._AC_UL320_.jpg',8542,4.4,'$25.25','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Virbac-Enzymatic-Hygiene-Chews-Medium/dp/B0812LTR6B/ref=sr_1_58?keywords=dental&qid=1703020360&sr=8-58',45,'2023-12-19 15:12:42.098634-06','2023-12-19 15:12:42.098634-06','www.amazon.com'),
+ (3454,'Oral-B Glide Pro-Health Dental Floss, Deep Clean Cool Mint Flavor, 40 M, 3 Count',NULL,'B01NBRH9TF','https://m.media-amazon.com/images/I/51k7AY+gTWL._AC_UL320_.jpg',306,4.8,'$9.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-Glide-Pro-Health-Clean-Flavor/dp/B01NBRH9TF/ref=sr_1_62?keywords=dental&qid=1703020360&sr=8-62',45,'2023-12-19 15:12:42.126987-06','2023-12-19 15:12:42.126987-06','www.amazon.com'),
+ (3455,'Dental Hygiene Kit - Calculus & Plaque Remover Dental Tool Set - Stainless Steel Tarter Scraper, Tooth Pick, and Mouth Mirror - Dentist Instrument Set for Teeth Cleaning (Blue)',NULL,'B01LOM4ISM','https://m.media-amazon.com/images/I/713MgYnb4qL._AC_UL320_.jpg',24805,4.6,'$14.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Professional-Dental-Stainless-Instruments-Hygienist/dp/B01LOM4ISM/ref=sr_1_63?keywords=dental&qid=1703020360&sr=8-63',45,'2023-12-19 15:12:42.13702-06','2023-12-19 15:12:42.13702-06','www.amazon.com'),
+ (3456,'PetLab Co. ProBright Dental Powder - Dog Teeth Cleaning Made Easy – Plaque & Bad Breath - Formulated for Small Dogs',NULL,'B0C5Y6MBCR','https://m.media-amazon.com/images/I/614gk3QnonL._AC_UL320_.jpg',937,3.8,'$35.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PetLab-Co-ProBright-Dental-Powder/dp/B0C5Y6MBCR/ref=sr_1_64?keywords=dental&qid=1703020360&rdc=1&sr=8-64',45,'2023-12-19 15:12:42.143929-06','2023-12-19 15:12:42.143929-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3457,'H2ofloss Water Flosser Portable Dental Oral Irrigator with 5 Modes, 6 Replaceable Jet Tips, Rechargeable Waterproof Teeth Cleaner for Home and Travel -300ml Detachable Reservoir Black',NULL,'B08PFLQDF8','https://m.media-amazon.com/images/I/61so6UPDy0L._AC_UL320_.jpg',2822,4.1,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjMwMDAxMjcxODE3NDgwMjo6MDo6&url=%2FH2ofloss-Replaceable-Rechargeable-Waterproof-Detachable%2Fdp%2FB08PFLQDF8%2Fref%3Dsr_1_65_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-65-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.150516-06','2023-12-19 15:12:42.150516-06','www.amazon.com'),
+ (3458,'Water Dental Flosser Cordless for Teeth, Portable Oral Irrigator Rechargeable Water Flosser for Teeth Cleaning with Travel Case, 4 Modes & 5 Jet Tips Electric Flosser IPX7 Waterproof for Home Travel',NULL,'B07FS7WF3K','https://m.media-amazon.com/images/I/71TREq5aH3L._AC_UL320_.jpg',2328,4.2,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjMwMDEwMzYxMDk1MTcwMjo6MDo6&url=%2FCordless-KOOVON-Rechargeable-Irrigator-Waterproof%2Fdp%2FB07FS7WF3K%2Fref%3Dsr_1_66_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-66-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.159866-06','2023-12-19 15:12:42.159866-06','www.amazon.com'),
+ (3459,'H2ofloss Water Flosser Portable Dental Oral Irrigator with 5 Modes, 6 Replaceable Jet Tips, Rechargeable Waterproof Teeth Cleaner for Home and Travel -300ml Detachable Reservoir (HF-6)',NULL,'B07T7M2VT2','https://m.media-amazon.com/images/I/71CV0weRkpL._AC_UL320_.jpg',22633,4.2,'$23.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjIwMDE3NjAyODQzNDg5ODo6MDo6&url=%2FH2ofloss-Replaceable-Rechargeable-Waterproof-HF-6%2Fdp%2FB07T7M2VT2%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.16778-06','2023-12-19 15:12:42.16778-06','www.amazon.com'),
+ (3460,'tinsay Electric Dental Mouth Mirror Photography Mirrors Automatic Defogging LED Photographic Reflector with 4 Interchangeable Mirrors',NULL,'B0BZHTQ3C3','https://m.media-amazon.com/images/I/41PStfLhNhL._AC_UL320_.jpg',3,3.8,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjMwMDA0MjM0MzY3NzMwMjo6MDo6&url=%2Ftinsay-Photography-Automatic-Photographic-Interchangeable%2Fdp%2FB0BZHTQ3C3%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.175683-06','2023-12-19 15:12:42.175683-06','www.amazon.com'),
+ (3461,'Reach Dentotape Waxed Dental Floss | Effective Plaque Removal, Extra Wide Cleaning Surface | Shred Resistance & Tension, Slides Smoothly & Easily, PFAS Free | Unflavored, 100 Yards, 1 Pack',NULL,'B000052YAN','https://m.media-amazon.com/images/I/71rhsNslNrL._AC_UL320_.jpg',8903,4.6,'$7.48','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reach-Dentotape-Cleaning-Surface-Unflavored/dp/B000052YAN/ref=sr_1_69?keywords=dental&qid=1703020360&sr=8-69',45,'2023-12-19 15:12:42.183088-06','2023-12-19 15:12:42.183088-06','www.amazon.com'),
+ (3462,'Oral-B EssentialFloss Cavity Defense Dental Floss, 50 M, 2 Pack',NULL,'B074F5NNCP','https://m.media-amazon.com/images/I/61UJ3pvD9kS._AC_UL320_.jpg',7107,4.6,'$3.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-B-EssentialFloss-Cavity-Defense-Dental/dp/B074F5NNCP/ref=sr_1_70?keywords=dental&qid=1703020360&sr=8-70',45,'2023-12-19 15:12:42.190983-06','2023-12-19 15:12:42.190983-06','www.amazon.com'),
+ (3474,'Plax Advanced PreBrushing Dental Rinse, Soft Mint, 24 Ounce',NULL,'B0012DVJM2','https://m.media-amazon.com/images/I/81GQqdubYWL._AC_UL320_.jpg',1255,4.8,'$6.32','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plax-Advanced-PreBrushing-Dental-Rinse/dp/B0012DVJM2/ref=sr_1_83?keywords=dental&qid=1703020360&sr=8-83',45,'2023-12-19 15:12:42.281774-06','2023-12-19 15:12:42.281774-06','www.amazon.com'),
+ (3463,'ProDen PlaqueOff System Dental Care Bones - Dog Teeth Cleaning Bones for Oral Hygiene -Medium/Large Canine Formula - Bacon Flavor -17 oz(Packaging May Vary)',NULL,'B0778ZMW66','https://m.media-amazon.com/images/I/71CdxhQvA4L._AC_UL320_.jpg',2589,4.4,'$18.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ProDen-PlaqueOff-Dental-Bones-Bacon/dp/B0778ZMW66/ref=sr_1_71?keywords=dental&qid=1703020360&sr=8-71',45,'2023-12-19 15:12:42.199567-06','2023-12-19 15:12:42.199567-06','www.amazon.com'),
+ (3464,'Future Dental Hygienist: Cute Dental Hygiene Student Journal Notebook',NULL,'B08KLT4R54','https://m.media-amazon.com/images/I/61C7eeAo33L._AC_UL320_.jpg',9,4.4,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Future-Dental-Hygienist-Hygiene-Notebook/dp/B08KLT4R54/ref=sr_1_72?keywords=dental&qid=1703020360&sr=8-72',45,'2023-12-19 15:12:42.207376-06','2023-12-19 15:12:42.207376-06','www.amazon.com'),
+ (3465,'Pruvade Disposable Dental Headrest Covers 14" x 10" | Pack of 250 | X-Large Clear Plastic Headrest Cover for Tattoo, Piercing and Dental Chairs, Professional Waterproof Clear Sleeves for Headrests',NULL,'B0B1L4B5LT','https://m.media-amazon.com/images/I/818lo2eLXJL._AC_UL320_.jpg',12,4.2,'$32.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjMwMDAxNjI3NDAxMjUwMjo6MDo6&url=%2FPruvade-Disposable-Professional-Waterproof-Headrests%2Fdp%2FB0B1L4B5LT%2Fref%3Dsr_1_73_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-73-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.214958-06','2023-12-19 15:12:42.214958-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3466,'Pevor New Dental Teeth Model Dental Caries Tooth Model Patient Education Teeth Model 6 Times Caries',NULL,'B07585C8N5','https://m.media-amazon.com/images/I/51NaPb39mVL._AC_UL320_.jpg',24,4.4,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjIwMDEyOTk2Njk0MjQ5ODo6MDo6&url=%2FPevor-Dental-Patient-Education-Comparation%2Fdp%2FB07585C8N5%2Fref%3Dsr_1_74_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-74-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.222354-06','2023-12-19 15:12:42.222354-06','www.amazon.com'),
+ (3467,'Tooth Neon Sign LED Teeth Sign for Dental Office Decor Wall Hanging Lights for Dentistry Wall Decor Business Sign Gift for Dentist, Dental Student Gift, Dentist Retirement Gift, Dentist Sign',NULL,'B09XQNZC44','https://m.media-amazon.com/images/I/91yAxknP12L._AC_UL320_.jpg',315,4.7,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjMwMDAwNTEzNjAxNjIwMjo6MDo6&url=%2FHangings-Dentistry-Business-Decoration-Retirement%2Fdp%2FB09XQNZC44%2Fref%3Dsr_1_75_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-75-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.230312-06','2023-12-19 15:12:42.230312-06','www.amazon.com'),
+ (3468,'faruijie Dental Typodont Teeth Model - Removable Tooth Teach Practice Model Teaching Study Typodont Demonstration Model Come with a Small Screwdriver…',NULL,'B09M2V2RWX','https://m.media-amazon.com/images/I/61C-xus1EdL._AC_UL320_.jpg',2,5.0,'$43.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY4OTc0OTQ3MDI3NzE3OjE3MDMwMjAzNjA6c3BfbXRmOjIwMDAyODU1NzA2NTM5ODo6MDo6&url=%2Ffaruijie-Dental-Typodont-Teeth-Model%2Fdp%2FB09M2V2RWX%2Fref%3Dsr_1_76_sspa%3Fkeywords%3Ddental%26qid%3D1703020360%26sr%3D8-76-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',45,'2023-12-19 15:12:42.237772-06','2023-12-19 15:12:42.237772-06','www.amazon.com'),
+ (3469,'Cocofloss Woven Dental Floss, Dentist-Designed Oral Care, Mint, Waxed, Expanding, Vegan, Kid-Friendly String Floss with Coconut Oil, 1 Spool (33 yd)',NULL,'B082BF4TYW','https://m.media-amazon.com/images/I/61ZK+H3em5L._AC_UL320_.jpg',7951,4.4,'$10.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/COCOFLOSS-Coconut-Oil-Delicious-Dentist-Designed-Cruelty-Free/dp/B082BF4TYW/ref=sr_1_77?keywords=dental&qid=1703020360&sr=8-77',45,'2023-12-19 15:12:42.245219-06','2023-12-19 15:12:42.245219-06','www.amazon.com'),
+ (3470,'Fixodent Ultra Max Hold Denture Adhesive, 2.2 Oz (Pack of 2)',NULL,'B07S97JQRV','https://m.media-amazon.com/images/I/61q-JrnWyaL._AC_UL320_.jpg',12832,4.6,'$11.47','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fixodent-Ultra-Denture-Adhesive-Ounce/dp/B07S97JQRV/ref=sr_1_78?keywords=dental&qid=1703020360&sr=8-78',45,'2023-12-19 15:12:42.253029-06','2023-12-19 15:12:42.253029-06','www.amazon.com'),
+ (3471,'ORAVET Dental Chews for Dogs, Oral Care and Hygiene Chews (Medium Dogs, 25-50 lbs.) Purple Pouch, 30 Count',NULL,'B07GC96344','https://m.media-amazon.com/images/I/813A3Jz4GGL._AC_UL320_.jpg',5588,4.6,'$38.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oravet-Dental-Hygiene-Medium-Treats/dp/B07GC96344/ref=sr_1_79?keywords=dental&qid=1703020360&sr=8-79',45,'2023-12-19 15:12:42.260295-06','2023-12-19 15:12:42.260295-06','www.amazon.com'),
+ (3472,'Oral-B Glide Pro-Health Dental Floss, Original Floss, 50m, Pack of 6',NULL,'B001F51RAG','https://m.media-amazon.com/images/I/71xQbC01wwL._AC_UL320_.jpg',6100,4.7,'$18.01','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-B-Glide-Pro-Health-Dental-Original/dp/B001F51RAG/ref=sr_1_80?keywords=dental&qid=1703020360&sr=8-80',45,'2023-12-19 15:12:42.267165-06','2023-12-19 15:12:42.267165-06','www.amazon.com'),
+ (3473,'DenTek Ultimate Guard for Nighttime Teeth Grinding',NULL,'B07M9Z6ZMN','https://m.media-amazon.com/images/I/71+FYv6VtcL._AC_UL320_.jpg',6566,3.4,'$21.72','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DenTek-Ultimate-Nighttime-Grinding-Fitting/dp/B07M9Z6ZMN/ref=sr_1_82?keywords=dental&qid=1703020360&rdc=1&sr=8-82',45,'2023-12-19 15:12:42.274444-06','2023-12-19 15:12:42.274444-06','www.amazon.com'),
+ (3475,'GUM - 6325A Soft-Picks Original Dental Picks, 270 Count',NULL,'B073C6LMJD','https://m.media-amazon.com/images/I/71lPrUcBNbL._AC_UL320_.jpg',10273,4.7,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GUM-Soft-Picks-Original-Dental-Picks/dp/B073C6LMJD/ref=sr_1_84?keywords=dental&qid=1703020360&sr=8-84',45,'2023-12-19 15:12:42.289165-06','2023-12-19 15:12:42.289165-06','www.amazon.com'),
+ (3476,'SleepRight Ultra-Comfort Dental Guard',NULL,'B000EJPNJU','https://m.media-amazon.com/images/I/81kfPlLCklS._AC_UL320_.jpg',1130,3.7,'$23.76','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SleepRight-SRNGLP-Ultra-Comfort-Dental-Guard/dp/B000EJPNJU/ref=sr_1_86?keywords=dental&qid=1703020360&sr=8-86',45,'2023-12-19 15:12:42.297889-06','2023-12-19 15:12:42.297889-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3477,'Amazon Basics Extra Comfort Mint Dental Floss, 40 M, 131.2 Foot (Pack of 6) (Previously Solimo)',NULL,'B08QWYC3MG','https://m.media-amazon.com/images/I/81CuqtXe86L._AC_UL320_.jpg',9776,4.4,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Basics-Extra-Comfort-Dental/dp/B08QWYC3MG/ref=sr_1_87?keywords=dental&qid=1703020360&sr=8-87',45,'2023-12-19 15:12:42.304718-06','2023-12-19 15:12:42.304718-06','www.amazon.com'),
+ (3478,'ORAVET Dental Chews for Dogs, Oral Care and Hygiene Chews (Small Dogs, 10-24 lbs.) Blue Pouch, 30 Count',NULL,'B07GC4WP3Z','https://m.media-amazon.com/images/I/81pCfoVrViL._AC_UL320_.jpg',12139,4.5,'$30.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Merial-Oravet-Dental-Hygiene-Treats/dp/B07GC4WP3Z/ref=sr_1_88?keywords=dental&qid=1703020360&sr=8-88',45,'2023-12-19 15:12:42.312241-06','2023-12-19 15:12:42.312241-06','www.amazon.com'),
+ (3479,'DenTek Temparin Max Lost Filling and Loose Cap Repair Kit | One Step Formula | 5+ Repairs | 0.04 Ounces | 2-Pack',NULL,'B07DR95HZP','https://m.media-amazon.com/images/I/71O6WuFOICL._AC_UL320_.jpg',7652,4.1,'$5.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DenTek-Temparin-Filling-Formula-Repairs/dp/B07DR95HZP/ref=sr_1_89?keywords=dental&qid=1703020360&sr=8-89',45,'2023-12-19 15:12:42.321167-06','2023-12-19 15:12:42.321167-06','www.amazon.com'),
+ (3480,'Whitebite Pro Teeth Whitening Kit for Sensitive Teeth with LED Light, 35% Carbamide Peroxide, (4) 3ml Gel Syringes, (2) Remineralization Gel and Mouth Tray',NULL,'B08XZYMMXH','https://m.media-amazon.com/images/I/71H5zuXao6L._AC_UL320_.jpg',6511,4.4,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Whitebite-Pro-Whitening-Sensitive-Remineralization/dp/B08XZYMMXH/ref=sr_1_90?keywords=dental&qid=1703020360&sr=8-90',45,'2023-12-19 15:12:42.328929-06','2023-12-19 15:12:42.328929-06','www.amazon.com'),
+ (3481,'ProDen PlaqueOff Dental Care for Dogs and Cats, 60gm',NULL,'B0047VWPNI','https://m.media-amazon.com/images/I/61Apc4te9BL._AC_UL320_.jpg',23089,4.1,'$21.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Proden-PlaqueOff-Dental-Care-Dogs/dp/B0047VWPNI/ref=sr_1_91?keywords=dental&qid=1703020360&sr=8-91',45,'2023-12-19 15:12:42.337208-06','2023-12-19 15:12:42.337208-06','www.amazon.com'),
+ (3482,'Oral-B Super Floss Pre-Cut Strands Dental Floss, Mint, 50 Count',NULL,'B0000530R6','https://m.media-amazon.com/images/I/61d1+ZFJOPL._AC_UL320_.jpg',10626,4.6,'$3.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oral-B-Super-Dental-Pre-Cut-Strands/dp/B0000530R6/ref=sr_1_92?keywords=dental&qid=1703020360&sr=8-92',45,'2023-12-19 15:12:42.344674-06','2023-12-19 15:12:42.344674-06','www.amazon.com'),
+ (3483,'Plaque Remover for Teeth, Tartar Remover for Teeth with LED Light, Dental Calculus Remover Teeth Cleaning Kit',NULL,'B0BWXJSV57','https://m.media-amazon.com/images/I/71CrdFLoTcL._AC_UL320_.jpg',310,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plaque-Remover-Tartar-Calculus-Cleaning/dp/B0BWXJSV57/ref=sr_1_93?keywords=dental&qid=1703020360&sr=8-93',45,'2023-12-19 15:12:42.351747-06','2023-12-19 15:12:42.351747-06','www.amazon.com'),
+ (3484,'JMU 125 Pack Dental Bibs, Pink Dental Bibs Disposable 3-Ply for Dental Tattoo Nail Medical Tray Covers 13" x 18"',NULL,'B08SCBT6DF','https://m.media-amazon.com/images/I/81ZdxgbO0yL._AC_UL320_.jpg',4178,4.7,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JMU-Dental-Disposable-Patient-Waterproof/dp/B08SCBT6DF/ref=sr_1_94?keywords=dental&qid=1703020360&sr=8-94',45,'2023-12-19 15:12:42.359904-06','2023-12-19 15:12:42.359904-06','www.amazon.com'),
+ (3485,'Dental Anatomy Coloring Book: Fun and Easy Kids & Adult Coloring Book for Dental Assistants, Dental Students, Dental Hygienists, Dental Therapists, ... Questions and Answers for Dental Assisting.',NULL,'B08NVVWGDX','https://m.media-amazon.com/images/I/713-+GGkR9L._AC_UL320_.jpg',4,5.0,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dental-Anatomy-Coloring-Book-Assistants/dp/B08NVVWGDX/ref=sr_1_95?keywords=dental&qid=1703020360&sr=8-95',45,'2023-12-19 15:12:42.367376-06','2023-12-19 15:12:42.367376-06','www.amazon.com'),
+ (3391,'Oral B Glide Dental Floss Picks, Complete With Scope Outlast, Mint, 75 Count, Pack Of 6',NULL,'B0922T53XY','https://m.media-amazon.com/images/I/61GgCBAKZFL._AC_UL320_.jpg',13421,4.7,'$24.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozOTk1NzQ3NzY4MDE0NzE3OjE3MDMwMjAzNTI6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAzMjg0ODEyNjYwMjo6Mzo6&url=%2FGlide-Complete-Scope-Outlast-Dental%2Fdp%2FB0922T53XY%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddental%26keywords%3Ddental%26pd_rd_i%3DB0922T53XY%26pd_rd_r%3Db4082be5-3659-4c04-95e1-c9c990733d67%26pd_rd_w%3DnVgTD%26pd_rd_wg%3DkNaLO%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3D6BDACS52YWZ77X2S2NB1%26qid%3D1703020352%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',45,'2023-12-19 15:12:33.116595-06','2023-12-19 15:12:42.373455-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3486,'Anbesol Maximum Strength Oral Pain Relief Gel, Instant Pain Relief For Toothache Pain, Canker Sores, Sore Gums, Mouth Sores, Denture Pain, and Aligner Pain, ADA Accepted, 0.33 oz (packaging may vary)',NULL,'B0006GBEJ4','https://m.media-amazon.com/images/I/81i05eaGTJL._AC_UL320_.jpg',14494,4.6,'$6.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Anbesol-Gel-Maximum-Strength-0-33/dp/B0006GBEJ4/ref=sr_1_97?keywords=dental&qid=1703020360&sr=8-97',45,'2023-12-19 15:12:42.380044-06','2023-12-19 15:12:42.380044-06','www.amazon.com'),
+ (3487,'DenTek Complete Clean Easy Reach Floss Picks, Advanced Fluoride Coating, Mouthwash Blast Flavor, 75 ct. (Pack of 2)',NULL,'B00NFUFUJ8','https://m.media-amazon.com/images/I/61fvoEgcpiL._AC_UL320_.jpg',13317,4.6,'$7.81','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dentek-Floss-Picks-Complete-Clean/dp/B00NFUFUJ8/ref=sr_1_98?keywords=dental&qid=1703020360&sr=8-98',45,'2023-12-19 15:12:42.388218-06','2023-12-19 15:12:42.388218-06','www.amazon.com'),
+ (3488,'ORAVET Dental Chews for Dogs, Oral Care and Hygiene Chews (Extra Small Dogs, 3.5-9 lbs.) Yellow Pouch, 30 Count',NULL,'B07GBVL31W','https://m.media-amazon.com/images/I/81G0NjpLw2L._AC_UL320_.jpg',3802,4.5,'$24.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OraVet-Dental-Hygiene-Chews-Dogs/dp/B07GBVL31W/ref=sr_1_99?keywords=dental&qid=1703020360&sr=8-99',45,'2023-12-19 15:12:42.395452-06','2023-12-19 15:12:42.395452-06','www.amazon.com'),
+ (3489,'ORAVET Dental Chews for Dogs, Oral Care and Hygiene Chews (Large Dogs, Over 50 lbs.) Pink Pouch, 30 Count',NULL,'B07GC96BCN','https://m.media-amazon.com/images/I/81q6VHUgGEL._AC_UL320_.jpg',5262,4.6,'$47.26','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Merial-Oravet-Dental-Hygiene-Treats/dp/B07GC96BCN/ref=sr_1_100?keywords=dental&qid=1703020360&sr=8-100',45,'2023-12-19 15:12:42.401987-06','2023-12-19 15:12:42.401987-06','www.amazon.com'),
+ (3490,'VETRISCIENCE Perio Support Teeth Cleaning Dental Powder for Dogs and Cats, Up to 192 Servings – Clinically Proven to Reduce Plaque and Tartar',NULL,'B000IZPY3K','https://m.media-amazon.com/images/I/61z9HTXsLEL._AC_UL320_.jpg',6070,4.2,'$20.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/VetriScience-Laboratories-Support-Dental-Health/dp/B000IZPY3K/ref=sr_1_101?keywords=dental&qid=1703020360&sr=8-101',45,'2023-12-19 15:12:42.412988-06','2023-12-19 15:12:42.412988-06','www.amazon.com'),
+ (3491,'TropiClean Fresh Breath Original | Dog Oral Care Water Additive | Dog Breath Freshener Additive for Dental Health | VOHC Certified | Made in the USA | 33.8 oz.',NULL,'B0054WTPBY','https://m.media-amazon.com/images/I/71jKjm87k4L._AC_UL320_.jpg',25679,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TropiClean-Breath-Plaque-Remover-Additive/dp/B0054WTPBY/ref=sr_1_103?keywords=dental&qid=1703020360&rdc=1&sr=8-103',45,'2023-12-19 15:12:42.420446-06','2023-12-19 15:12:42.420446-06','www.amazon.com'),
+ (3492,'Arm & Hammer For Pets Nubbies Dental Treats for Dogs | Dental Chews Fight Bad Breath, Plaque & Tartar without Brushing | Baking Soda Enhanced Chicken Flavor Dog Treats, 20 Pcs (Packaging may vary)',NULL,'B01AZIWX92','https://m.media-amazon.com/images/I/71eVjlkNhbL._AC_UL320_.jpg',9358,4.4,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Arm-Hammer-Original-Nubbies-Brushing/dp/B01AZIWX92/ref=sr_1_105?keywords=dental&qid=1703020360&sr=8-105',45,'2023-12-19 15:12:42.434456-06','2023-12-19 15:12:42.434456-06','www.amazon.com'),
+ (3493,'Tooth Stickers Decals[100Pack], Vinyl Dental Stickers Tooth Fairy Stickers Decals for Laptop Water Bottle Bumper Luggage Computer Skateboard Snowboard. Gift for Kids Girls Teens Adult',NULL,'B0CGVDP98L','https://m.media-amazon.com/images/I/81gYc6kTfpL._AC_UL320_.jpg',168,4.8,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Stickers-100Pack-Computer-Skateboard-Snowboard/dp/B0CGVDP98L/ref=sr_1_107?keywords=dental&qid=1703020360&sr=8-107',45,'2023-12-19 15:12:42.442347-06','2023-12-19 15:12:42.442347-06','www.amazon.com'),
+ (3494,'Sensodyne Pronamel Intensive Enamel Repair Toothpaste for Sensitive Teeth, to Reharden and Strengthen Enamel, Extra Fresh - 3.4 Ounces',NULL,'B07JYNPTMG','https://m.media-amazon.com/images/I/71FsiWhEROL._AC_UL320_.jpg',45978,4.7,'$6.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sensodyne-Pronamel-Intensive-Toothpaste-Strengthening/dp/B07JYNPTMG/ref=sr_1_108?keywords=dental&qid=1703020360&sr=8-108',45,'2023-12-19 15:12:42.44992-06','2023-12-19 15:12:42.44992-06','www.amazon.com'),
+ (3495,'Colgate 360 Advanced Floss Tip Toothbrush, Soft Toothbrush for Adults, 4 Pack',NULL,'B01LTHYW92','https://aax-us-iad.amazon.com/e/loi/imp?b=JG-2NSXEdH0_Bza4YcSvFP8AAAGMg-x1AgEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICCzU_Nq',4094,4.6,'$12.56','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RG-2NSXEdH0_Bza4YcSvFP8AAAGMg-x0zAEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICCzU_Nq/https://www.amazon.com/Colgate-Advanced-Floss-Tip-Bristles-Toothbrush/dp/B01LTHYW92/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=dental&keywords=dental&pd_rd_i=B01LTHYW92&pd_rd_r=85761f6f-8859-479a-a258-bc1084165e0c&pd_rd_w=Y354y&pd_rd_wg=kpWI3&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=38F7DVYQ8SPJY0SR99Z8&qid=1703020360&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-49-48f7baba-8e26-45f3-8811-e1a601ad20bf',45,'2023-12-19 15:12:42.457251-06','2023-12-19 15:12:42.457251-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3496,'Amazon Essentials',NULL,'B07X8XL78L','https://m.media-amazon.com/images/I/71wbpbWc-OL._AC_UL320_.jpg',14492,4.3,'$28.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfYXRmOjIwMDA0NDA0ODczNzIzMTo6MDo6&url=%2FAmazon-Essentials-Standard-Skinny-Fit-Stretch%2Fdp%2FB07X8XL78L%2Fref%3Dsr_1_1_ffob_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',46,'2023-12-19 15:12:50.73094-06','2023-12-19 15:12:50.73094-06','www.amazon.com'),
+ (3497,'Gildan',NULL,'B077ZJXCTS','https://m.media-amazon.com/images/I/710o0VupScL._AC_UL320_.jpg',276286,4.6,'$18.87','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Gildan-Mens-T-Shirt-Assortment-X-Large/dp/B077ZJXCTS/ref=sr_1_2?keywords=men%27s+clothing&qid=1703020369&sr=8-2',46,'2023-12-19 15:12:50.739806-06','2023-12-19 15:12:50.739806-06','www.amazon.com'),
+ (3498,'Wrangler Authentics',NULL,'B01L0KQTIK','https://m.media-amazon.com/images/I/A1X74ZCjO+L._AC_UL320_.jpg',22888,4.5,'$25.72','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wrangler-Authentics-Sweater-Quarter-Zip-Heather/dp/B01L0KQTIK/ref=sr_1_3?keywords=men%27s+clothing&qid=1703020369&sr=8-3',46,'2023-12-19 15:12:50.746798-06','2023-12-19 15:12:50.746798-06','www.amazon.com'),
+ (3499,'Legendary Whitetails',NULL,'B01K0ETB6E','https://m.media-amazon.com/images/I/917xzOZDnPL._AC_UL320_.jpg',79946,4.6,'$26.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Legendary-Whitetails-Flannels-Cedarwood-Plaid/dp/B01K0ETB6E/ref=sr_1_4?keywords=men%27s+clothing&qid=1703020369&sr=8-4',46,'2023-12-19 15:12:50.756138-06','2023-12-19 15:12:50.756138-06','www.amazon.com'),
+ (3500,'CANGHPGIN',NULL,'B09W91FGSH','https://m.media-amazon.com/images/I/61gQVDClZRL._AC_UL320_.jpg',1437,4.3,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY5NzY4OTk1MjY3NzE3OjE3MDMwMjAzNjk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5NTU5NTgyNjgwMjo6NDo6&url=%2FCANGHPGIN-Shirts-Sleeve-Muscle-Casual%2Fdp%2FB09W91FGSH%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB09W91FGSH%26pd_rd_r%3Dc9e42231-867f-47e7-90ce-da936a0b8ad5%26pd_rd_w%3DW4kFr%26pd_rd_wg%3DhZLmR%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:50.763443-06','2023-12-19 15:12:50.798316-06','www.amazon.com'),
+ (3503,'Real Essentials',NULL,'B09P21993P','https://m.media-amazon.com/images/I/619e0FxOsmL._AC_UL320_.jpg',14305,4.2,'$30.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY5NzY4OTk1MjY3NzE3OjE3MDMwMjAzNjk6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDAzODYzMTAzODc5ODo6Mjo6&url=%2FPack-Clothing-Athletic-Performance-Essentials%2Fdp%2FB09P21993P%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB09P21993P%26pd_rd_r%3Dc9e42231-867f-47e7-90ce-da936a0b8ad5%26pd_rd_w%3DW4kFr%26pd_rd_wg%3DhZLmR%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:50.78466-06','2023-12-19 15:12:51.224049-06','www.amazon.com'),
+ (3501,'NAVISKIN',NULL,'B07GZN49N8','https://m.media-amazon.com/images/I/61qA3e+2V0L._AC_UL320_.jpg',2849,4.5,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY5NzY4OTk1MjY3NzE3OjE3MDMwMjAzNjk6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5Mzc5OTk1NDg5ODo6MDo6&url=%2FNAVISKIN-Protection-Lightweight-Quick-Dry-Bluebell%2Fdp%2FB07GZN49N8%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB07GZN49N8%26pd_rd_r%3Dc9e42231-867f-47e7-90ce-da936a0b8ad5%26pd_rd_w%3DW4kFr%26pd_rd_wg%3DhZLmR%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:50.770536-06','2023-12-19 15:12:59.22397-06','www.amazon.com'),
+ (3502,'NELEUS',NULL,'B08RYQXJPK','https://m.media-amazon.com/images/I/71wJmHTEtlL._AC_UL320_.jpg',3396,4.6,'$29.86','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY5NzY4OTk1MjY3NzE3OjE3MDMwMjAzNjk6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA4ODc4MTY1ODQ4MTo6MTo6&url=%2FNeleus-Workout-Sleeveless-Running-Shirts%2Fdp%2FB08RYQXJPK%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB08RYQXJPK%26pd_rd_r%3Dc9e42231-867f-47e7-90ce-da936a0b8ad5%26pd_rd_w%3DW4kFr%26pd_rd_wg%3DhZLmR%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:50.777579-06','2023-12-19 15:12:59.230392-06','www.amazon.com'),
+ (3504,'NELEUS',NULL,'B07WTSQ55M','https://m.media-amazon.com/images/I/714FMMJBNxL._AC_UL320_.jpg',8993,4.5,'$36.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjY5NzY4OTk1MjY3NzE3OjE3MDMwMjAzNjk6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDAyODA3MjMwNjk4MTo6Mzo6&url=%2FNeleus-Running-Shirt-Workout-Athletic%2Fdp%2FB07WTSQ55M%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB07WTSQ55M%26pd_rd_r%3Dc9e42231-867f-47e7-90ce-da936a0b8ad5%26pd_rd_w%3DW4kFr%26pd_rd_wg%3DhZLmR%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:50.7926-06','2023-12-19 15:12:59.648617-06','www.amazon.com'),
+ (4562,'deweisn Magnifying Mirror 10X/1X,Double Sided Tabletop Mirror with Adjustable Folding Handle, Cosmetic Mirror with Lights for Makeup Travel,3 Colors Light',NULL,'B08XK6QRJL','https://m.media-amazon.com/images/I/6196eYEtYYL._AC_UL320_.jpg',1774,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfbXRmOjIwMDA1NzE0ODQ0MDE1MTo6MDo6&url=%2Fdeweisn-Magnifying-Adjustable-Blackhead-Removal-3%2Fdp%2FB08XK6QRJL%2Fref%3Dsr_1_60_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-60-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:07.924248-06','2023-12-19 15:18:07.924248-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3511,'Amazon Essentials',NULL,'B07BJL9YWN','https://m.media-amazon.com/images/I/71oF5-0Kl8L._AC_UL320_.jpg',22513,4.3,'$35.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjIwMDAxMTk2ODc4ODEzMTo6MDo6&url=%2FAmazon-Essentials-Athletic-Fit-Stretch-Black%2Fdp%2FB07BJL9YWN%2Fref%3Dsr_1_11_ffob_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.847966-06','2023-12-19 15:12:50.847966-06','www.amazon.com'),
+ (3512,'Sailwind',NULL,'B09FPV9Y9J','https://m.media-amazon.com/images/I/61HGXB+AUhL._AC_UL320_.jpg',1505,4.5,'$29.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjIwMDA4OTM3MjI0MzQ3MTo6MDo6&url=%2FSailwind-Crewneck-Sweater-Sweaters-Pullover%2Fdp%2FB09FPV9Y9J%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.855087-06','2023-12-19 15:12:50.855087-06','www.amazon.com'),
+ (3513,'MACHLAB',NULL,'B093FCWXHN','https://m.media-amazon.com/images/I/71+8LKmVCbS._AC_UL320_.jpg',13364,4.4,'$42.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjIwMDA5NDkyMzczNzQ5ODo6MDo6&url=%2FMACHLAB-Pullover-Workout-Jackets-BlackKhaki%2Fdp%2FB093FCWXHN%2Fref%3Dsr_1_13_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-13-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.861498-06','2023-12-19 15:12:50.861498-06','www.amazon.com'),
+ (3514,'Vcansion',NULL,'B099W94S3H','https://m.media-amazon.com/images/I/81qBgG6ysxL._AC_UL320_.jpg',1321,4.1,'$49.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjIwMDAzMjcxODU1NTY5ODo6MDo6&url=%2FVcansion-Winter-Cotton-Breasted-Outerwear%2Fdp%2FB099W94S3H%2Fref%3Dsr_1_14_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-14-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.870501-06','2023-12-19 15:12:50.870501-06','www.amazon.com'),
+ (3515,'INTO THE AM',NULL,'B08XTWF6DH','https://aax-us-iad.amazon.com/e/loi/imp?b=JFWD5_PsqfkWXAHLZRQkXmIAAAGMg-yVkgEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICBOIbft',7802,4.3,'$23.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RFWD5_PsqfkWXAHLZRQkXmIAAAGMg-yVTwEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICBOIbft/https://www.amazon.com/INTO-AM-Mens-Fitted-Essential/dp/B08XTWF6DH/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=men%27s+clothing&keywords=men%27s+clothing&pd_rd_i=B08XTWF6DH&pd_rd_r=c9e42231-867f-47e7-90ce-da936a0b8ad5&pd_rd_w=K5Kh8&pd_rd_wg=hZLmR&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=BW4K1RYC2PKGWM2H077Y&qid=1703020369&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',46,'2023-12-19 15:12:50.878703-06','2023-12-19 15:12:50.878703-06','www.amazon.comhttps:'),
+ (3516,'Fruit of the Loom',NULL,'B09R868D6F','https://m.media-amazon.com/images/I/61RhsrWDHEL._AC_UL320_.jpg',4399,4.3,'$15.74','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fruit-Loom-Eversoft-Sweatpants-Bottom-Black/dp/B09R868D6F/ref=sr_1_15?keywords=men%27s+clothing&qid=1703020369&sr=8-15',46,'2023-12-19 15:12:50.886105-06','2023-12-19 15:12:50.886105-06','www.amazon.com'),
+ (3517,'Amazon Essentials',NULL,'B08X2CP1ML','https://m.media-amazon.com/images/I/71n1ICl0BRL._AC_UL320_.jpg',5133,4.4,'$19.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Long-Sleeve-Quarter-Zip-Sweatshirt/dp/B08X2CP1ML/ref=sr_1_16?keywords=men%27s+clothing&qid=1703020369&sr=8-16',46,'2023-12-19 15:12:50.893986-06','2023-12-19 15:12:50.893986-06','www.amazon.com'),
+ (3518,'Southpole',NULL,'B07BRGL8JS','https://m.media-amazon.com/images/I/714w59JZieL._AC_UL320_.jpg',75793,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Southpole-Active-Jogger-Heather-X-Large/dp/B07BRGL8JS/ref=sr_1_17?keywords=men%27s+clothing&qid=1703020369&sr=8-17',46,'2023-12-19 15:12:50.905014-06','2023-12-19 15:12:50.905014-06','www.amazon.com'),
+ (3519,'PURE CHAMP',NULL,'B09ZD82V6S','https://m.media-amazon.com/images/I/91XUMIlN-fL._AC_UL320_.jpg',6119,4.3,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PURE-CHAMP-Athletic-Sweatpants-Drawstring/dp/B09ZD82V6S/ref=sr_1_18?keywords=men%27s+clothing&qid=1703020369&sr=8-18',46,'2023-12-19 15:12:50.916198-06','2023-12-19 15:12:50.916198-06','www.amazon.com'),
+ (3520,'EKLENTSON',NULL,'B07XB6HN5R','https://m.media-amazon.com/images/I/71swy0maS4L._AC_UL320_.jpg',919,4.4,'$65.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjMwMDA5MzgwODY0NDgwMjo6MDo6&url=%2FCotton-Jacket-Winter-Windbreaker-Tactical%2Fdp%2FB07XB6HN5R%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.92327-06','2023-12-19 15:12:50.92327-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3521,'Zaitun',NULL,'B0CJ599KGD','https://m.media-amazon.com/images/I/81+ejMFdaxL._AC_UL320_.jpg',28,4.6,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjMwMDA3MzM3OTYwNjMwMjo6MDo6&url=%2FZaitun-Sleeve-Lightweight-Collared-Sweater%2Fdp%2FB0CJ599KGD%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.930157-06','2023-12-19 15:12:50.930157-06','www.amazon.com'),
+ (3522,'NITAGUT',NULL,'B097QVD4M2','https://m.media-amazon.com/images/I/61TWiYLHxSL._AC_UL320_.jpg',814,4.5,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjIwMDA4NTIxMjE3MTc1MTo6MDo6&url=%2FNITAGUT-Quarter-Sweater-Turtleneck-Pullover%2Fdp%2FB097QVD4M2%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.939647-06','2023-12-19 15:12:50.939647-06','www.amazon.com'),
+ (3523,'EKLENTSON',NULL,'B07ZGJGXPC','https://m.media-amazon.com/images/I/61FUELmGZ1L._AC_UL320_.jpg',799,4.4,'$65.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjMwMDA4OTc5MTI5MjEwMjo6MDo6&url=%2FBomber-Jacket-Jackets-Military-Lightweight%2Fdp%2FB07ZGJGXPC%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.946381-06','2023-12-19 15:12:50.946381-06','www.amazon.com'),
+ (3524,'COOFANDY',NULL,'B07LCF3V1X','https://m.media-amazon.com/images/I/71lDM4MATuL._AC_UL320_.jpg',14169,4.4,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/COOFANDY-Sweatshirt-Drawstring-Jacquard-Pullover/dp/B07LCF3V1X/ref=sr_1_23?keywords=men%27s+clothing&qid=1703020369&sr=8-23',46,'2023-12-19 15:12:50.954594-06','2023-12-19 15:12:50.954594-06','www.amazon.com'),
+ (3525,'Carhartt',NULL,'B00FXPSP6S','https://m.media-amazon.com/images/I/51K+yl97NJL._AC_UL320_.jpg',22861,4.8,'$64.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Carhartt-Defender-Heavyweight-Sweatshirt-XX-Large/dp/B00FXPSP6S/ref=sr_1_24?keywords=men%27s+clothing&qid=1703020369&sr=8-24',46,'2023-12-19 15:12:50.962061-06','2023-12-19 15:12:50.962061-06','www.amazon.com'),
+ (3528,'COOFANDY',NULL,'B0CLRKQ77N','https://m.media-amazon.com/images/I/71Tnh3q0MxL._AC_UL320_.jpg',2,5.0,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjMwMDEwMzM1MDA0MzcwMjo6MDo6&url=%2FCOOFANDY-Casual-Button-Shirts-Clothing%2Fdp%2FB0CLRKQ77N%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.98588-06','2023-12-19 15:12:50.98588-06','www.amazon.com'),
+ (3529,'Sailwind',NULL,'B099M9764X','https://m.media-amazon.com/images/I/71PT8HtewjL._AC_UL320_.jpg',3684,4.5,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxOTM0ODI0MzAzNTUzNzE3OjE3MDMwMjAzNjk6c3BfbXRmOjIwMDA5NDkwODc5Mzc3MTo6MDo6&url=%2FSailwind-Henley-T-Shirt-XX-Large-Navy%2Fdp%2FB099M9764X%2Fref%3Dsr_1_29_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020369%26sr%3D8-29-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:50.992845-06','2023-12-19 15:12:50.992845-06','www.amazon.com'),
+ (3530,'Under Armour',NULL,'B0785VMVF4','https://m.media-amazon.com/images/I/61Eq6uGx22L._AC_UL320_.jpg',88429,4.5,'$12.07','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Sleeve-T-Shirt-Graphite/dp/B0785VMVF4/ref=sr_1_30?keywords=men%27s+clothing&qid=1703020369&sr=8-30',46,'2023-12-19 15:12:50.999542-06','2023-12-19 15:12:50.999542-06','www.amazon.com'),
+ (3531,'COOFANDY',NULL,'B075WRSH3N','https://m.media-amazon.com/images/I/61DSf-iLZML._AC_UL320_.jpg',14851,4.2,'$35.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Coofandy-Casual-Dress-Button-Shirts/dp/B075WRSH3N/ref=sr_1_31?keywords=men%27s+clothing&qid=1703020369&sr=8-31',46,'2023-12-19 15:12:51.008698-06','2023-12-19 15:12:51.008698-06','www.amazon.com'),
+ (3532,'PARREN',NULL,'B0CLYC9N8R','https://m.media-amazon.com/images/I/61e9vNm0X8L._AC_UL320_.jpg',2,3.0,'$19.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Tactical-Sweatshirt-Quarter-Pullover-Drawstring/dp/B0CLYC9N8R/ref=sr_1_32?keywords=men%27s+clothing&qid=1703020369&sr=8-32',46,'2023-12-19 15:12:51.015605-06','2023-12-19 15:12:51.015605-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3533,'Hanes',NULL,'B00JUM4IPW','https://m.media-amazon.com/images/I/817e39xUn-L._AC_UL320_.jpg',121453,4.6,'$15.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-EcoSmart-Fleece-Hoodie-Large/dp/B00JUM4IPW/ref=sr_1_33?keywords=men%27s+clothing&qid=1703020369&sr=8-33',46,'2023-12-19 15:12:51.02285-06','2023-12-19 15:12:51.02285-06','www.amazon.com'),
+ (3534,'CQR',NULL,'B07MFK1P36','https://m.media-amazon.com/images/I/81j7AOD3KrL._AC_UL320_.jpg',17555,4.6,'$36.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CQR-Flannel-Sleeved-Button-Up-All-Cotton/dp/B07MFK1P36/ref=sr_1_34?keywords=men%27s+clothing&qid=1703020369&sr=8-34',46,'2023-12-19 15:12:51.031078-06','2023-12-19 15:12:51.031078-06','www.amazon.com'),
+ (3535,'Amazon Essentials',NULL,'B08J94NG29','https://m.media-amazon.com/images/I/81FzQXFc8yL._MCnd_AC_UL320_.jpg',23337,4.4,'$14.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Straight-Fit-Pajama-Medium/dp/B08J94NG29/ref=sr_1_35?keywords=men%27s+clothing&qid=1703020369&sr=8-35',46,'2023-12-19 15:12:51.038706-06','2023-12-19 15:12:51.038706-06','www.amazon.com'),
+ (3536,'Lavnis',NULL,'B07J456Z3B','https://m.media-amazon.com/images/I/61KrwOOylUL._AC_UL320_.jpg',5858,4.0,'$40.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Vogstyle-Tracksuit-Running-Jogging-Athletic/dp/B07J456Z3B/ref=sr_1_36?keywords=men%27s+clothing&qid=1703020369&sr=8-36',46,'2023-12-19 15:12:51.045951-06','2023-12-19 15:12:51.045951-06','www.amazon.com'),
+ (3537,'Hanes',NULL,'B0BVMVZGC7','https://m.media-amazon.com/images/I/81fFK0WIgXL._AC_UL320_.jpg',18127,4.6,'$21.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Originals-Pullover-Crewneck-Sweatshirts/dp/B0BVMVZGC7/ref=sr_1_37?keywords=men%27s+clothing&qid=1703020369&sr=8-37',46,'2023-12-19 15:12:51.054116-06','2023-12-19 15:12:51.054116-06','www.amazon.com'),
+ (3538,'Alimens & Gentle',NULL,'B07CY3X5HS','https://m.media-amazon.com/images/I/819wcaoF7FL._AC_UL320_.jpg',58894,4.6,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Alimens-Gentle-Button-Regular-Flannel/dp/B07CY3X5HS/ref=sr_1_39?keywords=men%27s+clothing&qid=1703020369&sr=8-39',46,'2023-12-19 15:12:51.060878-06','2023-12-19 15:12:51.060878-06','www.amazon.com'),
+ (3539,'Amazon Essentials',NULL,'B07YDYGSQX','https://m.media-amazon.com/images/I/71Ot1aDXYOL._AC_UL320_.jpg',25985,4.3,'$8.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Standard-Loose-Fit-Crewneck/dp/B07YDYGSQX/ref=sr_1_40?keywords=men%27s+clothing&qid=1703020369&sr=8-40',46,'2023-12-19 15:12:51.069957-06','2023-12-19 15:12:51.069957-06','www.amazon.com'),
+ (3540,'Champion',NULL,'B01NAFW5O0','https://m.media-amazon.com/images/I/81sXWS93m-L._AC_UL320_.jpg',31487,4.5,'$12.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Classic-T-Shirt-Granite-Heather/dp/B01NAFW5O0/ref=sr_1_41?keywords=men%27s+clothing&qid=1703020369&sr=8-41',46,'2023-12-19 15:12:51.078293-06','2023-12-19 15:12:51.078293-06','www.amazon.com'),
+ (3541,'Wrangler Authentics',NULL,'B01L7B4FHE','https://m.media-amazon.com/images/I/71y+bkTiOdL._AC_UL320_.jpg',40122,4.6,'$22.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wrangler-Authentics-Sleeve-Fleece-Buffalo/dp/B01L7B4FHE/ref=sr_1_42?keywords=men%27s+clothing&qid=1703020369&sr=8-42',46,'2023-12-19 15:12:51.08567-06','2023-12-19 15:12:51.08567-06','www.amazon.com'),
+ (3542,'COOFANDY',NULL,'B0CBKYNND3','https://m.media-amazon.com/images/I/819yyi6OtpL._AC_UL320_.jpg',114,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/COOFANDY-Quarter-Corduroy-Pullover-Sweatshirt/dp/B0CBKYNND3/ref=sr_1_43?keywords=men%27s+clothing&qid=1703020369&sr=8-43',46,'2023-12-19 15:12:51.092188-06','2023-12-19 15:12:51.092188-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3543,'Columbia',NULL,'B0076R6MFM','https://m.media-amazon.com/images/I/61P45VyvJrL._AC_UL320_.jpg',41126,4.7,'$34.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Columbia-Steens-Mountain-Fleece-Classic/dp/B0076R6MFM/ref=sr_1_44?keywords=men%27s+clothing&qid=1703020369&sr=8-44',46,'2023-12-19 15:12:51.100677-06','2023-12-19 15:12:51.100677-06','www.amazon.com'),
+ (3544,'Carhartt',NULL,'B002DESA4E','https://m.media-amazon.com/images/I/81BMS9sa84L._AC_UL320_.jpg',31382,4.7,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Carhartt-Signature-T-Shirt-Original-XX-Large/dp/B002DESA4E/ref=sr_1_45?keywords=men%27s+clothing&qid=1703020369&sr=8-45',46,'2023-12-19 15:12:51.108014-06','2023-12-19 15:12:51.108014-06','www.amazon.com'),
+ (3545,'Carhartt',NULL,'B002GHC1KC','https://m.media-amazon.com/images/I/7153peVzzCL._AC_UL320_.jpg',22026,4.7,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Carhartt-Workwear-Pocket-Henley-Regular/dp/B002GHC1KC/ref=sr_1_46?keywords=men%27s+clothing&qid=1703020369&sr=8-46',46,'2023-12-19 15:12:51.115308-06','2023-12-19 15:12:51.115308-06','www.amazon.com'),
+ (3546,'Lee',NULL,'B01LI4IDLO','https://m.media-amazon.com/images/I/817qC6rtrHS._AC_UL320_.jpg',30525,4.6,'$25.01','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Modern-Extreme-Motion-Straight-Tapered/dp/B01LI4IDLO/ref=sr_1_47?keywords=men%27s+clothing&qid=1703020369&sr=8-47',46,'2023-12-19 15:12:51.122024-06','2023-12-19 15:12:51.122024-06','www.amazon.com'),
+ (3547,'Under Armour',NULL,'B0BGWDJJ7G','https://m.media-amazon.com/images/I/51yQCEnwNLL._AC_UL320_.jpg',32799,4.6,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Grove-Green-X-Large/dp/B0BGWDJJ7G/ref=sr_1_48?keywords=men%27s+clothing&qid=1703020369&sr=8-48',46,'2023-12-19 15:12:51.128665-06','2023-12-19 15:12:51.128665-06','www.amazon.com'),
+ (3548,'Under Armour',NULL,'B082BDDLS3','https://m.media-amazon.com/images/I/51WvCEEGitL._AC_UL320_.jpg',12920,4.3,'$27.86','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Woven-Workout-XX-Large/dp/B082BDDLS3/ref=sr_1_49?keywords=men%27s+clothing&qid=1703020369&sr=8-49',46,'2023-12-19 15:12:51.13607-06','2023-12-19 15:12:51.13607-06','www.amazon.com'),
+ (3549,'Amazon Essentials',NULL,'B079P8RVPP','https://m.media-amazon.com/images/I/81JIBLEDxbL._AC_UL320_.jpg',27402,4.6,'$28.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Full-Zip-Sweatshirt-Charcoal/dp/B079P8RVPP/ref=sr_1_50?keywords=men%27s+clothing&qid=1703020369&sr=8-50',46,'2023-12-19 15:12:51.145626-06','2023-12-19 15:12:51.145626-06','www.amazon.com'),
+ (3550,'adidas',NULL,'B08MKSR82B','https://m.media-amazon.com/images/I/51I9fgiIogL._AC_UL320_.jpg',4110,4.6,'$14.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Standard-Essentials-3-Stripes-Tracksuit/dp/B08MKSR82B/ref=sr_1_52?keywords=men%27s+clothing&qid=1703020369&sr=8-52',46,'2023-12-19 15:12:51.153781-06','2023-12-19 15:12:51.153781-06','www.amazon.com'),
+ (3551,'Nike',NULL,'B0CMYCHMFH','https://m.media-amazon.com/images/I/81PTFhxgEwL._AC_UL320_.jpg',13,4.7,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nike-Unisex-Performance-Cushion-Socks/dp/B0CMYCHMFH/ref=sr_1_53_mod_primary_new?keywords=men%27s+clothing&qid=1703020369&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=8-53',46,'2023-12-19 15:12:51.161046-06','2023-12-19 15:12:51.161046-06','www.amazon.com'),
+ (3552,'Jerzees',NULL,'B00T7TXS54','https://m.media-amazon.com/images/I/71c7eRazT8S._AC_UL320_.jpg',56018,4.5,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jerzees-Dri-Power-Moisture-Protection-3X-Large/dp/B00T7TXS54/ref=sr_1_54?keywords=men%27s+clothing&qid=1703020369&sr=8-54',46,'2023-12-19 15:12:51.168725-06','2023-12-19 15:12:51.168725-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3553,'Yeokou',NULL,'B074W1FNNZ','https://m.media-amazon.com/images/I/81cA3ubtXwL._AC_UL320_.jpg',10785,4.3,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Yeokou-Knitted-Cardigan-Sweaters-Pockets/dp/B074W1FNNZ/ref=sr_1_55?keywords=men%27s+clothing&qid=1703020369&sr=8-55',46,'2023-12-19 15:12:51.175366-06','2023-12-19 15:12:51.175366-06','www.amazon.com'),
+ (3554,'Amazon Essentials',NULL,'B075JWCR4M','https://m.media-amazon.com/images/I/7121M9UBAPL._AC_UL320_.jpg',45144,4.5,'$15.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Fleece-Sweatpants-X-Large/dp/B075JWCR4M/ref=sr_1_56?keywords=men%27s+clothing&qid=1703020369&sr=8-56',46,'2023-12-19 15:12:51.182429-06','2023-12-19 15:12:51.182429-06','www.amazon.com'),
+ (3555,'THE GYM PEOPLE',NULL,'B07YHK1L7T','https://m.media-amazon.com/images/I/71RnJfwBHoL._AC_UL320_.jpg',6105,4.5,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GYM-PEOPLE-Loose-fit-Sweatpants-Lined-Black/dp/B07YHK1L7T/ref=sr_1_57?keywords=men%27s+clothing&qid=1703020369&sr=8-57',46,'2023-12-19 15:12:51.189859-06','2023-12-19 15:12:51.189859-06','www.amazon.com'),
+ (3556,'Amazon Essentials',NULL,'B08X5C4S38','https://m.media-amazon.com/images/I/91XyiNxemAL._AC_UL320_.jpg',8632,4.6,'$19.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Regular-fit-Long-Sleeve-Flannel/dp/B08X5C4S38/ref=sr_1_59?keywords=men%27s+clothing&qid=1703020369&sr=8-59',46,'2023-12-19 15:12:51.202031-06','2023-12-19 15:12:51.202031-06','www.amazon.com'),
+ (3557,'Amazon Essentials',NULL,'B07QGKXWCP','https://m.media-amazon.com/images/I/81I2qjL2arL._AC_UL320_.jpg',2475,4.5,'$19.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Standard-Regular-Fit-Long-Sleeve/dp/B07QGKXWCP/ref=sr_1_60?keywords=men%27s+clothing&qid=1703020369&sr=8-60',46,'2023-12-19 15:12:51.209721-06','2023-12-19 15:12:51.209721-06','www.amazon.com'),
+ (4563,'FYY Travel Cable Organizer Pouch Electronic Accessories Carry Case Portable Waterproof Double Layers All-in-One Storage Bag for Cord, Charger, Phone, Hard Drive, Black',NULL,'B09XB27Z9Q','https://m.media-amazon.com/images/I/71UZMDj-cLL._AC_UL320_.jpg',202,4.5,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfbXRmOjIwMDE0Njc5MTIyMzE5ODo6MDo6&url=%2FFYY-Electronic-Organizer-Accessories-Waterproof%2Fdp%2FB09XB27Z9Q%2Fref%3Dsr_1_61_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:07.92968-06','2023-12-19 15:18:07.92968-06','www.amazon.com'),
+ (3559,'Real Essentials',NULL,'B0C31N9R4V','https://m.media-amazon.com/images/I/91oSoS5KOzL._AC_UL320_.jpg',517,4.0,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNjM4OTM5MTE1MDcxNzoxNzAzMDIwMzY5OnNwX3NlYXJjaF90aGVtYXRpY19idGY6MjAwMTU5NDQwODU2Njk4OjoxOjo&url=%2FPack-Collared-Clothing-Athletic-Performance%2Fdp%2FB0C31N9R4V%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB0C31N9R4V%26pd_rd_r%3Df8f189cf-4b51-4505-b749-7f64ff127835%26pd_rd_w%3DfO2UT%26pd_rd_wg%3D1E6pb%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:51.23097-06','2023-12-19 15:12:51.23097-06','www.amazon.com'),
+ (3560,'Real Essentials',NULL,'B07NWZ85D8','https://m.media-amazon.com/images/I/81+O6GnEKyL._AC_UL320_.jpg',46350,4.4,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNjM4OTM5MTE1MDcxNzoxNzAzMDIwMzY5OnNwX3NlYXJjaF90aGVtYXRpY19idGY6MjAwMDE5OTU1MTM5MzMxOjoyOjo&url=%2FT-Shirt-Athletic-Essentials-Clothing-Undershirt%2Fdp%2FB07NWZ85D8%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB07NWZ85D8%26pd_rd_r%3Df8f189cf-4b51-4505-b749-7f64ff127835%26pd_rd_w%3DfO2UT%26pd_rd_wg%3D1E6pb%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:51.238269-06','2023-12-19 15:12:51.238269-06','www.amazon.com'),
+ (3585,'H2H',NULL,'B0BNL2M92L','https://m.media-amazon.com/images/I/614G5NaWPRL._AC_UL320_.jpg',2652,4.5,'$29.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjMwMDA3MjM2MTE5MzYwMjo6MDo6&url=%2FH2H-Formal-Hoodie-SMOKEGRAY-CMOHOL091%2Fdp%2FB0BNL2M92L%2Fref%3Dsr_1_69_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-69-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.3511-06','2023-12-19 15:12:59.3511-06','www.amazon.com'),
+ (3644,'Dokotoo',NULL,'B09B413K33','https://m.media-amazon.com/images/I/61jizvyzfcL._AC_UL320_.jpg',1566,4.3,'$29.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Ladiess-Sweatshirt-Drawstring-Pullover/dp/B09B413K33/ref=sr_1_11?keywords=women%27s+clothing&qid=1703020384&sr=8-11',47,'2023-12-19 15:13:06.007073-06','2023-12-19 15:13:06.007073-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3561,'Boladeci',NULL,'B0BFH8L1NB','https://m.media-amazon.com/images/I/71pVd81oIbL._AC_UL320_.jpg',385,4.4,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNjM4OTM5MTE1MDcxNzoxNzAzMDIwMzY5OnNwX3NlYXJjaF90aGVtYXRpY19idGY6MzAwMDY1NzQxNjU4MDAyOjozOjo&url=%2FBoladeci-Pullover-Thermal-Moisture-Sweatshirts%2Fdp%2FB0BFH8L1NB%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB0BFH8L1NB%26pd_rd_r%3Df8f189cf-4b51-4505-b749-7f64ff127835%26pd_rd_w%3DfO2UT%26pd_rd_wg%3D1E6pb%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:51.245044-06','2023-12-19 15:12:51.245044-06','www.amazon.com'),
+ (3558,'Real Essentials',NULL,'B07J4YJZNW','https://m.media-amazon.com/images/I/71LPdu26vxL._AC_UL320_.jpg',85464,4.3,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNjM4OTM5MTE1MDcxNzoxNzAzMDIwMzY5OnNwX3NlYXJjaF90aGVtYXRpY19idGY6MjAwMTAzMTQ3MDI0MDMxOjo0Ojo&url=%2FDri-Fit-Training-Athletic-Essentials-Undershirt%2Fdp%2FB07J4YJZNW%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB07J4YJZNW%26pd_rd_r%3Df8f189cf-4b51-4505-b749-7f64ff127835%26pd_rd_w%3DfO2UT%26pd_rd_wg%3D1E6pb%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DBW4K1RYC2PKGWM2H077Y%26qid%3D1703020369%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:51.21782-06','2023-12-19 15:12:51.252278-06','www.amazon.com'),
+ (3562,'NITAGUT',NULL,'B08GLDBPWQ','https://m.media-amazon.com/images/I/813U20E4s3L._AC_UL320_.jpg',3907,4.4,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfYXRmX25leHQ6MjAwMDMyOTEzOTcyNzUxOjowOjo&url=%2FNITAGUT-Cardigan-Knitted-Sweater-Closure%25EF%25BC%258CGrey%25EF%25BC%258CXX-Large%2Fdp%2FB08GLDBPWQ%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',46,'2023-12-19 15:12:59.157479-06','2023-12-19 15:12:59.157479-06','www.amazon.com'),
+ (3563,'ThxToms',NULL,'B0CD26HFMG','https://m.media-amazon.com/images/I/81lCPug4mHL._AC_UL320_.jpg',26,4.3,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfYXRmX25leHQ6MzAwMDY5NjEyMTMyMDAyOjowOjo&url=%2FThxToms-Rechargeable-Waterproof-Touchscreen-Motorcycle%2Fdp%2FB0CD26HFMG%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',46,'2023-12-19 15:12:59.175306-06','2023-12-19 15:12:59.175306-06','www.amazon.com'),
+ (3564,'LQHHYLYX',NULL,'B09JZDCG19','https://m.media-amazon.com/images/I/61dgTkEkQyL._AC_UL320_.jpg',444,4.0,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfYXRmX25leHQ6MzAwMDk4ODQ0MDM5ODAyOjowOjo&url=%2FLQHHYLYX-Multicolor-Stitching-Comfortable-Sweatshirt%2Fdp%2FB09JZDCG19%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',46,'2023-12-19 15:12:59.182285-06','2023-12-19 15:12:59.182285-06','www.amazon.com'),
+ (3565,'Yeokou',NULL,'B07KMR7VR4','https://m.media-amazon.com/images/I/71sXADKyfhL._AC_UL320_.jpg',10785,4.3,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfYXRmX25leHQ6MzAwMDkyNDk2MjcwODAyOjowOjo&url=%2FYeokou-Knitted-Cardigan-Sweaters-Z-12-Dark%2Fdp%2FB07KMR7VR4%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',46,'2023-12-19 15:12:59.188801-06','2023-12-19 15:12:59.188801-06','www.amazon.com'),
+ (3566,'Champion',NULL,'B0B9T52G3B','https://m.media-amazon.com/images/I/81CotVuF5xL._AC_UL320_.jpg',627,4.6,'$13.46','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Crewneck-Mid-Weight-Triangle-XX-Large/dp/B0B9T52G3B/ref=sr_1_53?keywords=men%27s+clothing&qid=1703020378&sr=8-53',46,'2023-12-19 15:12:59.195431-06','2023-12-19 15:12:59.195431-06','www.amazon.com'),
+ (3567,'Gildan',NULL,'B07682H9BX','https://m.media-amazon.com/images/I/715bY3uEYgL._AC_UL320_.jpg',137369,4.5,'$15.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Gildan-Cotton-Sleeve-T-Shirt-X-Large/dp/B07682H9BX/ref=sr_1_54?keywords=men%27s+clothing&qid=1703020378&sr=8-54',46,'2023-12-19 15:12:59.203559-06','2023-12-19 15:12:59.203559-06','www.amazon.com'),
+ (3568,'Under Armour',NULL,'B077ZXV38Y','https://m.media-amazon.com/images/I/51LWeqBz9xL._AC_UL320_.jpg',8819,4.6,'$15.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-V-Neck-Academy-XX-Large/dp/B077ZXV38Y/ref=sr_1_55?keywords=men%27s+clothing&qid=1703020378&sr=8-55',46,'2023-12-19 15:12:59.210351-06','2023-12-19 15:12:59.210351-06','www.amazon.com'),
+ (4564,'Luggage Cup Holder Free Hand Travel Drink Caddy Luggage Straps for Suitcases add a Bag Fits Roll on Suitcase Handles Gifts for Flight Attendants Travelers Accessories Black',NULL,'B0C2PMQ66H','https://m.media-amazon.com/images/I/716AmPh6+sL._AC_UL320_.jpg',6,3.7,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfbXRmOjMwMDEwNzM0ODQxMDIwMjo6MDo6&url=%2FLuggage-Shoulder-Thermal-Insulated-Suitcase%2Fdp%2FB0C2PMQ66H%2Fref%3Dsr_1_62_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-62-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:07.93565-06','2023-12-19 15:18:07.93565-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3570,'MOHEEN',NULL,'B0BRPZTPR2','https://m.media-amazon.com/images/I/71TwcymUfbL._AC_UL320_.jpg',412,4.4,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3MjIzNDc0ODIyNjQyNzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDEzMTUzMTUzNzQ5ODo6Mjo6&url=%2FSleeve-Clothing-Athletic-Performance-Essentials%2Fdp%2FB0BRPZTPR2%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB0BRPZTPR2%26pd_rd_r%3Db65c4afb-52e6-46b9-99b8-4141e8e5cbbd%26pd_rd_w%3DTBemn%26pd_rd_wg%3DUSxqD%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:59.238786-06','2023-12-19 15:12:59.238786-06','www.amazon.com'),
+ (3607,'Amazon Essentials',NULL,'B07P8WX9RG','https://m.media-amazon.com/images/I/91zUfADtx4L._AC_UL320_.jpg',13587,4.5,'$15.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Standard-Full-Zip-Sweatshirt/dp/B07P8WX9RG/ref=sr_1_91?keywords=men%27s+clothing&qid=1703020378&sr=8-91',46,'2023-12-19 15:12:59.499277-06','2023-12-19 15:12:59.499277-06','www.amazon.com'),
+ (3571,'NITAGUT',NULL,'B0B8ZGKJWH','https://m.media-amazon.com/images/I/61H4q-uLFrL._AC_UL320_.jpg',314,4.6,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3MjIzNDc0ODIyNjQyNzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDEyODEwMTIyMzg5ODo6Mzo6&url=%2FNITAGUT-Shirts-Performance-Stretch-XX-Large%2Fdp%2FB0B8ZGKJWH%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB0B8ZGKJWH%26pd_rd_r%3Db65c4afb-52e6-46b9-99b8-4141e8e5cbbd%26pd_rd_w%3DTBemn%26pd_rd_wg%3DUSxqD%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:59.245223-06','2023-12-19 15:12:59.245223-06','www.amazon.com'),
+ (3569,'MIER',NULL,'B09TP1QYRP','https://m.media-amazon.com/images/I/71ofkD1VvSL._AC_UL320_.jpg',152,4.5,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3MjIzNDc0ODIyNjQyNzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5NjQ5NjM3ODUwMjo6NDo6&url=%2FMIER-Shirts-Sleeve-Collared-Moisture-Wicking%2Fdp%2FB09TP1QYRP%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB09TP1QYRP%26pd_rd_r%3Db65c4afb-52e6-46b9-99b8-4141e8e5cbbd%26pd_rd_w%3DTBemn%26pd_rd_wg%3DUSxqD%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',46,'2023-12-19 15:12:59.217662-06','2023-12-19 15:12:59.252726-06','www.amazon.com'),
+ (3572,'Under Armour',NULL,'B077XQ5QM7','https://m.media-amazon.com/images/I/51sfHbqw-iL._AC_UL320_.jpg',66147,4.7,'$18.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Graphic-Shorts-Academy/dp/B077XQ5QM7/ref=sr_1_56?keywords=men%27s+clothing&qid=1703020378&sr=8-56',46,'2023-12-19 15:12:59.259874-06','2023-12-19 15:12:59.259874-06','www.amazon.com'),
+ (3573,'Hanes',NULL,'B07FN49S63','https://m.media-amazon.com/images/I/71n1CQQB-zL._AC_UL320_.jpg',50731,4.4,'$13.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-EcoSmart-Sweatpant-Pockets-Charcoal/dp/B07FN49S63/ref=sr_1_57?keywords=men%27s+clothing&qid=1703020378&sr=8-57',46,'2023-12-19 15:12:59.265763-06','2023-12-19 15:12:59.265763-06','www.amazon.com'),
+ (3574,'Amazon Essentials',NULL,'B079RNTRT2','https://m.media-amazon.com/images/I/91HhhwfQLtL._AC_UL320_.jpg',21222,4.5,'$25.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Crewneck-Sweater-Heather/dp/B079RNTRT2/ref=sr_1_58?keywords=men%27s+clothing&qid=1703020378&sr=8-58',46,'2023-12-19 15:12:59.272943-06','2023-12-19 15:12:59.272943-06','www.amazon.com'),
+ (3575,'Vcansion',NULL,'B01M9F7K7B','https://m.media-amazon.com/images/I/816MjmH6DtL._AC_UL320_.jpg',3111,4.2,'$39.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjMwMDA4NjE4NjAxODEwMjo6MDo6&url=%2FVcansion-Classic-Knitted-Cardigan-Sweaters%2Fdp%2FB01M9F7K7B%2Fref%3Dsr_1_59_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-59-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.279828-06','2023-12-19 15:12:59.279828-06','www.amazon.com'),
+ (3576,'Yuccalley',NULL,'B07VPHBWBM','https://m.media-amazon.com/images/I/61pIIlKCMIL._AC_UL320_.jpg',1466,4.4,'$25.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjIwMDA5MTEzMDQyNTE5ODo6MDo6&url=%2FYuccalley-Fashion-Hoodies-Sweatshirts-Pullover%2Fdp%2FB07VPHBWBM%2Fref%3Dsr_1_60_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-60-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.286795-06','2023-12-19 15:12:59.286795-06','www.amazon.com'),
+ (3578,'URBANFIND',NULL,'B06XK97JQP','https://m.media-amazon.com/images/I/519kCnvDE7L._AC_UL320_.jpg',7970,4.5,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjIwMDA5NzU2OTc4NTA5ODo6MDo6&url=%2FURBANFIND-Lightweight-Sportswear-Jacket-Casual%2Fdp%2FB06XK97JQP%2Fref%3Dsr_1_62_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-62-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.299899-06','2023-12-19 15:12:59.299899-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3579,'Under Armour',NULL,'B07815RQKP','https://m.media-amazon.com/images/I/61ZF21bFTUL._AC_UL320_.jpg',28777,4.6,'$17.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-sportstyle-T-Shirt-Heather/dp/B07815RQKP/ref=sr_1_63?keywords=men%27s+clothing&qid=1703020378&sr=8-63',46,'2023-12-19 15:12:59.307701-06','2023-12-19 15:12:59.307701-06','www.amazon.com'),
+ (3580,'Under Armour',NULL,'B01M7S6LUP','https://m.media-amazon.com/images/I/41ST5qtPI2L._AC_UL320_.jpg',13338,4.7,'$33.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Sportstyle-Jogger-Heather/dp/B01M7S6LUP/ref=sr_1_64?keywords=men%27s+clothing&qid=1703020378&sr=8-64',46,'2023-12-19 15:12:59.315047-06','2023-12-19 15:12:59.315047-06','www.amazon.com'),
+ (3581,'Amazon Essentials',NULL,'B075JV8PDN','https://m.media-amazon.com/images/I/81XXxfg1XuL._AC_UL320_.jpg',46803,4.5,'$21.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Full-Zip-Sweatshirt-XX-Large/dp/B075JV8PDN/ref=sr_1_65?keywords=men%27s+clothing&qid=1703020378&sr=8-65',46,'2023-12-19 15:12:59.32269-06','2023-12-19 15:12:59.32269-06','www.amazon.com'),
+ (3582,'Fruit of the Loom',NULL,'B0B9CF88TZ','https://m.media-amazon.com/images/I/81ETJ+wSNdL._AC_UL320_.jpg',43764,4.5,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fruit-Loom-Mens-Extended-Jersey-Heather/dp/B0B9CF88TZ/ref=sr_1_66?keywords=men%27s+clothing&qid=1703020378&sr=8-66',46,'2023-12-19 15:12:59.330192-06','2023-12-19 15:12:59.330192-06','www.amazon.com'),
+ (3583,'Lehmanlin',NULL,'B0BY88NZ19','https://m.media-amazon.com/images/I/61ApDOm4n1L._AC_UL320_.jpg',51,4.4,'$26.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjMwMDA4MzcyNzYwMzcwMjo6MDo6&url=%2FLehmanlin-Muscle-Lightweight-Fashion-T-Shirts%2Fdp%2FB0BY88NZ19%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.337881-06','2023-12-19 15:12:59.337881-06','www.amazon.com'),
+ (3584,'COOFANDY',NULL,'B0BHYJ7DW9','https://m.media-amazon.com/images/I/61UXA3yl88L._AC_UL320_.jpg',996,4.2,'$46.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjMwMDEwMzQzMzQwOTQwMjo6MDo6&url=%2FCOOFANDY-Pieces-Cotton-Pockets-Outfits%2Fdp%2FB0BHYJ7DW9%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.344608-06','2023-12-19 15:12:59.344608-06','www.amazon.com'),
+ (3586,'NELEUS',NULL,'B09K63ZJYN','https://m.media-amazon.com/images/I/71zPAqEPoGL._AC_UL320_.jpg',1457,4.5,'$28.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjIwMDAzNTMyODEwMDM5ODo6MDo6&url=%2FNeleus-Running-Sleeve-Workout-Shirts%2Fdp%2FB09K63ZJYN%2Fref%3Dsr_1_70_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-70-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.358505-06','2023-12-19 15:12:59.358505-06','www.amazon.com'),
+ (3587,'Under Armour',NULL,'B08NWJL7VX','https://m.media-amazon.com/images/I/51EIx4-hmuL._AC_UL320_.jpg',10992,4.7,'$21.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Freedom-T-Shirt-Marine/dp/B08NWJL7VX/ref=sr_1_71?keywords=men%27s+clothing&qid=1703020378&sr=8-71',46,'2023-12-19 15:12:59.364772-06','2023-12-19 15:12:59.364772-06','www.amazon.com'),
+ (3588,'Under Armour',NULL,'B07YXNNRVW','https://m.media-amazon.com/images/I/61bD0xr19ZL._AC_UL320_.jpg',13901,4.7,'$27.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Fleece-Heather-X-Large/dp/B07YXNNRVW/ref=sr_1_72?keywords=men%27s+clothing&qid=1703020378&sr=8-72',46,'2023-12-19 15:12:59.371156-06','2023-12-19 15:12:59.371156-06','www.amazon.com'),
+ (3589,'Champion',NULL,'B078LGFCHX','https://m.media-amazon.com/images/I/51sKBZQHbSL._AC_UL320_.jpg',9698,4.6,'$22.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Assorted-Essential-Long-Sleeve-Black-Y06794/dp/B078LGFCHX/ref=sr_1_73?keywords=men%27s+clothing&qid=1703020378&sr=8-73',46,'2023-12-19 15:12:59.376759-06','2023-12-19 15:12:59.376759-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3590,'Dokotoo Men',NULL,'B0CGZ7N7J4','https://m.media-amazon.com/images/I/71te2DSMK8L._AC_UL320_.jpg',125,4.4,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Men-Sweatshirts-Lightweight-Crewneck/dp/B0CGZ7N7J4/ref=sr_1_74?keywords=men%27s+clothing&qid=1703020378&sr=8-74',46,'2023-12-19 15:12:59.383588-06','2023-12-19 15:12:59.383588-06','www.amazon.com'),
+ (3591,'Nike',NULL,'B0CFFPHZVF','https://m.media-amazon.com/images/I/81jodkS0wlL._AC_UL320_.jpg',1,5.0,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nike-Sportswear-Swoosh-X-Large-Pistachio/dp/B0CFFPHZVF/ref=sr_1_75?keywords=men%27s+clothing&qid=1703020378&sr=8-75',46,'2023-12-19 15:12:59.390712-06','2023-12-19 15:12:59.390712-06','www.amazon.com'),
+ (3592,'adidas',NULL,'B081R33LK2','https://m.media-amazon.com/images/I/91PSe6qy8PL._AC_UL320_.jpg',37280,4.6,'$20.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Athletic-Socks-6-Pair-Black/dp/B081R33LK2/ref=sr_1_76?keywords=men%27s+clothing&qid=1703020378&sr=8-76',46,'2023-12-19 15:12:59.39743-06','2023-12-19 15:12:59.39743-06','www.amazon.com'),
+ (3593,'Amazon Essentials',NULL,'B07P3N64SM','https://m.media-amazon.com/images/I/91+fzAlmztL._AC_UL320_.jpg',11077,4.5,'$16.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Standard-Quarter-Zip-Heather/dp/B07P3N64SM/ref=sr_1_77?keywords=men%27s+clothing&qid=1703020378&sr=8-77',46,'2023-12-19 15:12:59.404441-06','2023-12-19 15:12:59.404441-06','www.amazon.com'),
+ (3594,'Under Armour',NULL,'B01GH5GSLG','https://m.media-amazon.com/images/I/513HWlYAMPL._AC_UL320_.jpg',49563,4.7,'$30.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-White-Graphite-Large/dp/B01GH5GSLG/ref=sr_1_78?keywords=men%27s+clothing&qid=1703020378&sr=8-78',46,'2023-12-19 15:12:59.410991-06','2023-12-19 15:12:59.410991-06','www.amazon.com'),
+ (3595,'Gildan',NULL,'B01LZQACF4','https://m.media-amazon.com/images/I/91+PtsHS5jL._AC_UL320_.jpg',65561,4.6,'$12.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Gildan-Heavy-Blend-Crewneck-Sweatshirt/dp/B01LZQACF4/ref=sr_1_79?keywords=men%27s+clothing&qid=1703020378&sr=8-79',46,'2023-12-19 15:12:59.418518-06','2023-12-19 15:12:59.418518-06','www.amazon.com'),
+ (3596,'Hanes',NULL,'B072MR4NQ8','https://m.media-amazon.com/images/I/81M-7VvFZ0L._AC_UL320_.jpg',117436,4.4,'$16.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Comfortsoft-T-Shirt-charcoal-heather/dp/B072MR4NQ8/ref=sr_1_80?keywords=men%27s+clothing&qid=1703020378&sr=8-80',46,'2023-12-19 15:12:59.424948-06','2023-12-19 15:12:59.424948-06','www.amazon.com'),
+ (3597,'adidas',NULL,'B0BJ6DM1TT','https://m.media-amazon.com/images/I/815j7Qq98mL._AC_UL320_.jpg',42,4.7,'$6.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Essentials-Single-Jersey-Embroidered/dp/B0BJ6DM1TT/ref=sr_1_81?keywords=men%27s+clothing&qid=1703020378&sr=8-81',46,'2023-12-19 15:12:59.431652-06','2023-12-19 15:12:59.431652-06','www.amazon.com'),
+ (3598,'Amazon Essentials',NULL,'B08J9232PY','https://m.media-amazon.com/images/I/71BAyc9xQ2L._AC_UL320_.jpg',3178,4.4,'$25.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Fleece-Sweatpant-Indigo/dp/B08J9232PY/ref=sr_1_82?keywords=men%27s+clothing&qid=1703020378&sr=8-82',46,'2023-12-19 15:12:59.43901-06','2023-12-19 15:12:59.43901-06','www.amazon.com'),
+ (3599,'Hanes',NULL,'B01L9H85RM','https://m.media-amazon.com/images/I/719NiYxL4rL._AC_UL320_.jpg',18232,4.3,'$14.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Performance-Training-Pockets-Stealth/dp/B01L9H85RM/ref=sr_1_83?keywords=men%27s+clothing&qid=1703020378&sr=8-83',46,'2023-12-19 15:12:59.444999-06','2023-12-19 15:12:59.444999-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3600,'Champion',NULL,'B0BRQZB3QF','https://m.media-amazon.com/images/I/41Je-BDG-8L._AC_UL320_.jpg',14259,4.6,'$18.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Moisture-Wicking-Athletic-3X-Large/dp/B0BRQZB3QF/ref=sr_1_84?keywords=men%27s+clothing&qid=1703020378&sr=8-84',46,'2023-12-19 15:12:59.452216-06','2023-12-19 15:12:59.452216-06','www.amazon.com'),
+ (3601,'Real Essentials',NULL,'B07DRNTL8K','https://m.media-amazon.com/images/I/91FcSGFvMFL._AC_UL320_.jpg',85464,4.3,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dri-Fit-Training-Athletic-Essentials-T-Shirt/dp/B07DRNTL8K/ref=sr_1_85?keywords=men%27s+clothing&qid=1703020378&sr=8-85',46,'2023-12-19 15:12:59.458574-06','2023-12-19 15:12:59.458574-06','www.amazon.com'),
+ (3602,'Nautica',NULL,'B07BR17PD1','https://m.media-amazon.com/images/I/81J8AFcFMjL._AC_UL320_.jpg',12327,4.4,'$13.12','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nautica-Short-Sleeve-T-Shirt-Medium/dp/B07BR17PD1/ref=sr_1_86?keywords=men%27s+clothing&qid=1703020378&sr=8-86',46,'2023-12-19 15:12:59.464958-06','2023-12-19 15:12:59.464958-06','www.amazon.com'),
+ (3603,'Champion',NULL,'B078GLLX3W','https://m.media-amazon.com/images/I/51Fo6N7xDKL._AC_UL320_.jpg',8891,4.6,'$25.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Packable-Jacket-Black-XX-Large/dp/B078GLLX3W/ref=sr_1_87?keywords=men%27s+clothing&qid=1703020378&sr=8-87',46,'2023-12-19 15:12:59.471791-06','2023-12-19 15:12:59.471791-06','www.amazon.com'),
+ (3604,'TELALEO',NULL,'B0C6GPWV32','https://m.media-amazon.com/images/I/613bajxed1L._AC_UL320_.jpg',1555,4.6,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Compression-Athletic-Weather-Undershirt-Workout/dp/B0C6GPWV32/ref=sr_1_88?keywords=men%27s+clothing&qid=1703020378&sr=8-88',46,'2023-12-19 15:12:59.478231-06','2023-12-19 15:12:59.478231-06','www.amazon.com'),
+ (3605,'Amazon Essentials',NULL,'B08617BXR4','https://m.media-amazon.com/images/I/91bxX3N6hhL._AC_UL320_.jpg',5468,4.6,'$29.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Long-Sleeve-Fisherman-Off-White/dp/B08617BXR4/ref=sr_1_89?keywords=men%27s+clothing&qid=1703020378&sr=8-89',46,'2023-12-19 15:12:59.485448-06','2023-12-19 15:12:59.485448-06','www.amazon.com'),
+ (3606,'Wrangler',NULL,'B01MRO342O','https://m.media-amazon.com/images/I/61f6UoPavoL._AC_UL320_.jpg',6754,4.4,'$44.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wrangler-Mens-Retro-Relaxed-Jackson/dp/B01MRO342O/ref=sr_1_90?keywords=men%27s+clothing&qid=1703020378&sr=8-90',46,'2023-12-19 15:12:59.492477-06','2023-12-19 15:12:59.492477-06','www.amazon.com'),
+ (3577,'Zaitun',NULL,'B08VWYBKYH','https://m.media-amazon.com/images/I/912avsuBEdL._AC_UL320_.jpg',3514,4.5,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyNDc5NjA4ODI1NjYxNzE3OjE3MDMwMjAzNzg6c3BfbXRmOjIwMDA3ODQ3MzcyODc5ODo6MDo6&url=%2FZaitun-Sweatshirt-Knitted-Pullover-Sweater%2Fdp%2FB08VWYBKYH%2Fref%3Dsr_1_61_sspa%3Fkeywords%3Dmen%2527s%2Bclothing%26qid%3D1703020378%26sr%3D8-61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',46,'2023-12-19 15:12:59.29299-06','2023-12-19 15:12:59.512378-06','www.amazon.com'),
+ (3609,'Amazon Essentials',NULL,'B079LPNXHF','https://m.media-amazon.com/images/I/91qK9c1Vx1L._AC_UL320_.jpg',16869,4.5,'$14.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Full-Zip-Charcoal-XX-Large/dp/B079LPNXHF/ref=sr_1_94?keywords=men%27s+clothing&qid=1703020378&sr=8-94',46,'2023-12-19 15:12:59.520549-06','2023-12-19 15:12:59.520549-06','www.amazon.com'),
+ (3610,'Hanes',NULL,'B0BB8B8ZJW','https://m.media-amazon.com/images/I/91txowOolNL._AC_UL320_.jpg',290,4.3,'$13.11','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Crewneck-Sweatshirt-Tri-Blend-Heather/dp/B0BB8B8ZJW/ref=sr_1_95?keywords=men%27s+clothing&qid=1703020378&sr=8-95',46,'2023-12-19 15:12:59.52711-06','2023-12-19 15:12:59.52711-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3611,'adidas',NULL,'B0BJ622M57','https://m.media-amazon.com/images/I/413ueX2CoXL._AC_UL320_.jpg',78,4.6,'$11.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Essentials-Embroidered-T-Shirt-X-Large/dp/B0BJ622M57/ref=sr_1_96?keywords=men%27s+clothing&qid=1703020378&sr=8-96',46,'2023-12-19 15:12:59.53424-06','2023-12-19 15:12:59.53424-06','www.amazon.com'),
+ (3612,'Champion',NULL,'B073R28JZY','https://m.media-amazon.com/images/I/811MN2qiz9S._AC_UL320_.jpg',37903,4.4,'$19.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champion-Jersey-Jogger-Granite-Heather/dp/B073R28JZY/ref=sr_1_97?keywords=men%27s+clothing&qid=1703020378&sr=8-97',46,'2023-12-19 15:12:59.541471-06','2023-12-19 15:12:59.541471-06','www.amazon.com'),
+ (3613,'Body Glove',NULL,'B0CLQWTLMS','https://m.media-amazon.com/images/I/71lZnzTHJoL._AC_UL320_.jpg',8,3.8,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Body-Glove-Mens-Socks-Performance/dp/B0CLQWTLMS/ref=sr_1_98?keywords=men%27s+clothing&qid=1703020378&sr=8-98',46,'2023-12-19 15:12:59.547798-06','2023-12-19 15:12:59.547798-06','www.amazon.com'),
+ (3614,'Amazon Essentials',NULL,'B0BRKB598K','https://m.media-amazon.com/images/I/81TkFI1D1mL._AC_UL320_.jpg',10849,4.4,'$14.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Performance-Cushioned-Athletic/dp/B0BRKB598K/ref=sr_1_99?keywords=men%27s+clothing&qid=1703020378&sr=8-99',46,'2023-12-19 15:12:59.555211-06','2023-12-19 15:12:59.555211-06','www.amazon.com'),
+ (3615,'COOFANDY',NULL,'B07486N4SR','https://m.media-amazon.com/images/I/713qaHeOnDL._AC_UL320_.jpg',9337,4.5,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Coofandy-Knitted-Sweaters-Pullover-Knitwear/dp/B07486N4SR/ref=sr_1_100?keywords=men%27s+clothing&qid=1703020378&sr=8-100',46,'2023-12-19 15:12:59.561403-06','2023-12-19 15:12:59.561403-06','www.amazon.com'),
+ (3616,'Under Armour',NULL,'B09WD3815Q','https://m.media-amazon.com/images/I/51GvrUVWNfL._AC_UL320_.jpg',82,4.7,'$28.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Standard-Playoff-X-Large/dp/B09WD3815Q/ref=sr_1_101?keywords=men%27s+clothing&qid=1703020378&sr=8-101',46,'2023-12-19 15:12:59.569263-06','2023-12-19 15:12:59.569263-06','www.amazon.com'),
+ (3617,'Amazon Essentials',NULL,'B08J922PNN','https://m.media-amazon.com/images/I/81EStL-+1UL._AC_UL320_.jpg',2515,4.4,'$23.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Sweatpant-Charcoal-Heather/dp/B08J922PNN/ref=sr_1_102?keywords=men%27s+clothing&qid=1703020378&sr=8-102',46,'2023-12-19 15:12:59.5759-06','2023-12-19 15:12:59.5759-06','www.amazon.com'),
+ (3618,'Fruit of the Loom',NULL,'B08D2SCWLL','https://m.media-amazon.com/images/I/71HqeAgY0cL._AC_UL320_.jpg',3012,4.5,'$21.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fruit-Loom-Recycled-Thermal-Underwear/dp/B08D2SCWLL/ref=sr_1_103?keywords=men%27s+clothing&qid=1703020378&sr=8-103',46,'2023-12-19 15:12:59.582789-06','2023-12-19 15:12:59.582789-06','www.amazon.com'),
+ (3619,'PUMA',NULL,'B0BGMDWD9N','https://m.media-amazon.com/images/I/51G+5i9++FL._AC_UL320_.jpg',22,4.2,'$9.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-Short-Sleeve-T-Shirt-Casual/dp/B0BGMDWD9N/ref=sr_1_104?keywords=men%27s+clothing&qid=1703020378&sr=8-104',46,'2023-12-19 15:12:59.590155-06','2023-12-19 15:12:59.590155-06','www.amazon.com'),
+ (3620,'POLO',NULL,'B07FN4GHN8','https://m.media-amazon.com/images/I/71R3uFTAVTL._AC_UL320_.jpg',11588,4.5,'$45.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/POLO-RALPH-LAUREN-Classic-Andover/dp/B07FN4GHN8/ref=sr_1_105?keywords=men%27s+clothing&qid=1703020378&sr=8-105',46,'2023-12-19 15:12:59.597132-06','2023-12-19 15:12:59.597132-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3621,'Nike',NULL,'B087LWNKFB','https://m.media-amazon.com/images/I/41I-ttZRMtL._AC_UL320_.jpg',7198,4.1,'$25.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nike-Soccer-Shorts-Small-Black/dp/B087LWNKFB/ref=sr_1_106?keywords=men%27s+clothing&qid=1703020378&sr=8-106',46,'2023-12-19 15:12:59.604187-06','2023-12-19 15:12:59.604187-06','www.amazon.com'),
+ (3622,'adidas',NULL,'B09YBCVSJB','https://m.media-amazon.com/images/I/61fWnEQgr7L._AC_UL320_.jpg',523,4.6,'$16.13','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Essentials-Embroidered-T-Shirt-Heather/dp/B09YBCVSJB/ref=sr_1_107?keywords=men%27s+clothing&qid=1703020378&sr=8-107',46,'2023-12-19 15:12:59.611236-06','2023-12-19 15:12:59.611236-06','www.amazon.com'),
+ (3623,'Amazon Essentials',NULL,'B08TVKTC2L','https://m.media-amazon.com/images/I/91QdspqvVhL._AC_UL320_.jpg',982,4.4,'$29.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Long-Sleeve-Sweater-X-Large/dp/B08TVKTC2L/ref=sr_1_108?keywords=men%27s+clothing&qid=1703020378&sr=8-108',46,'2023-12-19 15:12:59.620352-06','2023-12-19 15:12:59.620352-06','www.amazon.com'),
+ (4565,'CIXVOEMK Silicone Headphone Organizer-Data Cable Storage Case-Mini Key Box-Portable Wired Headphone Organizer(Red-Grey-Green-3PCS)',NULL,'B0BG5277LY','https://m.media-amazon.com/images/I/61jAeUQNzOL._AC_UL320_.jpg',456,4.3,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Silicone-Headphone-Organizer-Lipstick-Red-Grey-Green-3PCS/dp/B0BG5277LY/ref=sr_1_63?keywords=travel+accessories&qid=1703020686&sr=8-63',57,'2023-12-19 15:18:07.942339-06','2023-12-19 15:18:07.942339-06','www.amazon.com'),
+ (3645,'LILLUSORY',NULL,'B0C65Z4WXF','https://m.media-amazon.com/images/I/711YLR04gNL._AC_UL320_.jpg',334,4.3,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LILLUSORY-Cardigans-Sweater-Fashion-Clothes/dp/B0C65Z4WXF/ref=sr_1_12?keywords=women%27s+clothing&qid=1703020384&sr=8-12',47,'2023-12-19 15:13:06.014089-06','2023-12-19 15:13:06.014089-06','www.amazon.com'),
+ (3646,'Hanes',NULL,'B00ZUNH1WW','https://m.media-amazon.com/images/I/81CRymSaWcL._AC_UL320_.jpg',61242,4.3,'$10.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Ecosmart-Crewneck-athletic-sweatshirts/dp/B00ZUNH1WW/ref=sr_1_13?keywords=women%27s+clothing&qid=1703020384&sr=8-13',47,'2023-12-19 15:13:06.02227-06','2023-12-19 15:13:06.02227-06','www.amazon.com'),
+ (3625,'Real Essentials',NULL,'B07VF89R18','https://m.media-amazon.com/images/I/61YpUEEQENL._AC_UL320_.jpg',14305,4.2,'$30.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzE5NjY3MDY4Mzk4NzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwMzIyOTE1NTczMzE6OjA6Og&url=%2FPack-Mens-Active-Dry-Polo%2Fdp%2FB07VF89R18%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB07VF89R18%26pd_rd_r%3D5489a068-5462-495e-96ad-0af4b49b7857%26pd_rd_w%3DAVi5P%26pd_rd_wg%3DpUAsn%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:59.635449-06','2023-12-19 15:12:59.635449-06','www.amazon.com'),
+ (3626,'Real Essentials',NULL,'B08FXSHQVB','https://m.media-amazon.com/images/I/714xFtOU6mL._AC_UL320_.jpg',46350,4.4,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzE5NjY3MDY4Mzk4NzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxMDMxNTEzNTUwMzE6OjE6Og&url=%2FT-Shirt-Athletic-Essentials-Clothing-Undershirt%2Fdp%2FB08FXSHQVB%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB08FXSHQVB%26pd_rd_r%3D5489a068-5462-495e-96ad-0af4b49b7857%26pd_rd_w%3DAVi5P%26pd_rd_wg%3DpUAsn%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-50-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:59.642385-06','2023-12-19 15:12:59.642385-06','www.amazon.com'),
+ (3627,'Real Essentials',NULL,'B07DRN7P8J','https://m.media-amazon.com/images/I/71LPdu26vxL._AC_UL320_.jpg',85464,4.3,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzE5NjY3MDY4Mzk4NzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwMjEwNTE3Nzk2MzE6OjM6Og&url=%2FDri-Fit-Training-Athletic-Essentials-T-Shirt%2Fdp%2FB07DRN7P8J%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB07DRN7P8J%26pd_rd_r%3D5489a068-5462-495e-96ad-0af4b49b7857%26pd_rd_w%3DAVi5P%26pd_rd_wg%3DpUAsn%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:59.656237-06','2023-12-19 15:12:59.656237-06','www.amazon.com'),
+ (3624,'Merino.tech',NULL,'B0BHZMH9TQ','https://m.media-amazon.com/images/I/81W9x5Ag7WL._AC_UL320_.jpg',189,4.4,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzE5NjY3MDY4Mzk4NzE3OjE3MDMwMjAzNzg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNDA0NDk5OTQxOTg6OjQ6Og&url=%2FMerino-Wool-Polo-Shirt-Men%2Fdp%2FB0BHZMH9TQ%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bclothing%26keywords%3Dmen%2527s%2Bclothing%26pd_rd_i%3DB0BHZMH9TQ%26pd_rd_r%3D5489a068-5462-495e-96ad-0af4b49b7857%26pd_rd_w%3DAVi5P%26pd_rd_wg%3DpUAsn%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DFQHKW173JTZNJ5WSG2CN%26qid%3D1703020378%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',46,'2023-12-19 15:12:59.628215-06','2023-12-19 15:12:59.66325-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3628,'Dokotoo',NULL,'B08QJPJ3RB','https://m.media-amazon.com/images/I/71L34zwlHrL._AC_UL320_.jpg',3347,4.3,'$28.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Womens-Spring-Fashion-Blouses/dp/B08QJPJ3RB/ref=sr_1_1?keywords=women%27s+clothing&qid=1703020384&sr=8-1',47,'2023-12-19 15:13:05.872953-06','2023-12-19 15:13:05.872953-06','www.amazon.com'),
+ (3629,'AUTOMET',NULL,'B09HC6DFMS','https://m.media-amazon.com/images/I/614VXl7BjqL._AC_UL320_.jpg',13368,4.4,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUTOMET-Oversized-Flannel-Shacket-Apricot/dp/B09HC6DFMS/ref=sr_1_2?keywords=women%27s+clothing&qid=1703020384&sr=8-2',47,'2023-12-19 15:13:05.881269-06','2023-12-19 15:13:05.881269-06','www.amazon.com'),
+ (3630,'Bestshe',NULL,'B07XDNX9VH','https://m.media-amazon.com/images/I/61vYA7oMTIL._AC_UL320_.jpg',1941,4.5,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Womens-Tassel-Oversized-Cardigan-Sweater/dp/B07XDNX9VH/ref=sr_1_3?keywords=women%27s+clothing&qid=1703020384&sr=8-3',47,'2023-12-19 15:13:05.889203-06','2023-12-19 15:13:05.889203-06','www.amazon.com'),
+ (4566,'MLVOC Travel Pillow 100% Pure Memory Foam Neck Pillow, Comfortable & Breathable Cover, Machine Washable, Airplane Travel Kit with 3D Contoured Eye Masks, Earplugs, and Luxury Bag, Standard (Black)',NULL,'B082K8ZNQ1','https://m.media-amazon.com/images/I/81Fy+yZT+xL._AC_UL320_.jpg',32618,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MLVOC-Comfortable-Breathable-Washable-Contoured/dp/B082K8ZNQ1/ref=sr_1_64?keywords=travel+accessories&qid=1703020686&sr=8-64',57,'2023-12-19 15:18:07.947965-06','2023-12-19 15:18:07.947965-06','www.amazon.com'),
+ (3632,'Aloodor',NULL,'B099JXF8VL','https://m.media-amazon.com/images/I/616ZjG4+MoL._AC_UL320_.jpg',6335,4.3,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NzUwMjU5NzMxMzYyNzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA4OTEzNDU5OTE2MTo6MDo6&url=%2FAloodor-Lounge-Loungewear-Casual-Stripe%2Fdp%2FB099JXF8VL%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB099JXF8VL%26pd_rd_r%3D10422572-eda9-4d87-a28b-f619124611c6%26pd_rd_w%3DmQKWm%26pd_rd_wg%3DlOmzq%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:05.90487-06','2023-12-19 15:13:05.90487-06','www.amazon.com'),
+ (3647,'LILLUSORY',NULL,'B0B51197P4','https://m.media-amazon.com/images/I/51n1zQVJIAL._AC_UL320_.jpg',4222,4.3,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LILLUSORY-Turtleneck-Oversized-Sweaters-Pullover/dp/B0B51197P4/ref=sr_1_14?keywords=women%27s+clothing&qid=1703020384&sr=8-14',47,'2023-12-19 15:13:06.029138-06','2023-12-19 15:13:06.029138-06','www.amazon.com'),
+ (3633,'MoFiz',NULL,'B08YJ58BS5','https://m.media-amazon.com/images/I/51KDGAAZUvL._AC_UL320_.jpg',1965,4.4,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NzUwMjU5NzMxMzYyNzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA4NTM0NDg1Nzk5ODo6MTo6&url=%2FMoFiz-Outdoor-Athletic-Boating-Camping%2Fdp%2FB08YJ58BS5%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB08YJ58BS5%26pd_rd_r%3D10422572-eda9-4d87-a28b-f619124611c6%26pd_rd_w%3DmQKWm%26pd_rd_wg%3DlOmzq%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:05.910938-06','2023-12-19 15:13:05.910938-06','www.amazon.com'),
+ (3634,'AJISAI',NULL,'B08PVH71KL','https://m.media-amazon.com/images/I/61ZK-UBckeS._AC_UL320_.jpg',9625,4.5,'$32.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NzUwMjU5NzMxMzYyNzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDExMTYyNTM3MDA5ODo6Mjo6&url=%2FAJISAI-Joggers-Drawstring-Running-Sweatpants%2Fdp%2FB08PVH71KL%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB08PVH71KL%26pd_rd_r%3D10422572-eda9-4d87-a28b-f619124611c6%26pd_rd_w%3DmQKWm%26pd_rd_wg%3DlOmzq%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:05.922021-06','2023-12-19 15:13:05.922021-06','www.amazon.com'),
+ (3635,'Zeagoo',NULL,'B09NNGMCM1','https://m.media-amazon.com/images/I/71plNVGGYgL._AC_UL320_.jpg',2092,4.1,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NzUwMjU5NzMxMzYyNzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA3ODk2NjM5Nzg5ODo6Mzo6&url=%2FZeagoo-Outfit-Summer-Sleeve-Sweatsuit%2Fdp%2FB09NNGMCM1%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB09NNGMCM1%26pd_rd_r%3D10422572-eda9-4d87-a28b-f619124611c6%26pd_rd_w%3DmQKWm%26pd_rd_wg%3DlOmzq%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:05.929822-06','2023-12-19 15:13:05.929822-06','www.amazon.com'),
+ (3631,'Yeokou',NULL,'B07QTPTF1G','https://m.media-amazon.com/images/I/518PFzFvGjL._AC_UL320_.jpg',25021,4.4,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NzUwMjU5NzMxMzYyNzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA3MTQ2Mzg3MTkwMjo6NDo6&url=%2FYeokou-Womens-Athletic-Sweatpants-Black001%2Fdp%2FB07QTPTF1G%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB07QTPTF1G%26pd_rd_r%3D10422572-eda9-4d87-a28b-f619124611c6%26pd_rd_w%3DmQKWm%26pd_rd_wg%3DlOmzq%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:05.89762-06','2023-12-19 15:13:05.937235-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3636,'Sunzel',NULL,'B0BB7STYJL','https://m.media-amazon.com/images/I/61aUZQs50XL._AC_UL320_.jpg',11461,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sunzel-Leggings-Crossover-Control-High-Waisted/dp/B0BB7STYJL/ref=sr_1_4?keywords=women%27s+clothing&qid=1703020384&sr=8-4',47,'2023-12-19 15:13:05.945425-06','2023-12-19 15:13:05.945425-06','www.amazon.com'),
+ (3637,'Dokotoo',NULL,'B0B4JSJ8F4','https://m.media-amazon.com/images/I/61BhGJ3b3hL._AC_UL320_.jpg',2115,4.2,'$31.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Crewneck-Sweatshirt-Pullover-Sweatshirts/dp/B0B4JSJ8F4/ref=sr_1_5?keywords=women%27s+clothing&qid=1703020384&sr=8-5',47,'2023-12-19 15:13:05.953251-06','2023-12-19 15:13:05.953251-06','www.amazon.com'),
+ (3638,'WallFlower',NULL,'B073177R9Q','https://m.media-amazon.com/images/I/71Biyy-urSL._AC_UL320_.jpg',50592,4.4,'$34.67','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WallFlower-Juniors-Instastretch-Luscious-Bootcut/dp/B073177R9Q/ref=sr_1_6?keywords=women%27s+clothing&qid=1703020384&sr=8-6',47,'2023-12-19 15:13:05.960527-06','2023-12-19 15:13:05.960527-06','www.amazon.com'),
+ (3639,'Dokotoo',NULL,'B0C7VZHDM1','https://m.media-amazon.com/images/I/71ROuD9s7jL._AC_UL320_.jpg',401,4.5,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Sweaters-Striped-Pullover-Drawstring/dp/B0C7VZHDM1/ref=sr_1_7?keywords=women%27s+clothing&qid=1703020384&sr=8-7',47,'2023-12-19 15:13:05.967999-06','2023-12-19 15:13:05.967999-06','www.amazon.com'),
+ (3640,'Legendary Whitetails',NULL,'B012XF4GUY','https://m.media-amazon.com/images/I/81bX5sLjTAS._AC_UL320_.jpg',13382,4.4,'$25.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Legendary-Whitetails-Cottage-Flannel-X-Large/dp/B012XF4GUY/ref=sr_1_8?keywords=women%27s+clothing&qid=1703020384&sr=8-8',47,'2023-12-19 15:13:05.975751-06','2023-12-19 15:13:05.975751-06','www.amazon.com'),
+ (3641,'PRETTYGARDEN',NULL,'B08DTFW6Y8','https://m.media-amazon.com/images/I/71B5I2AfVaL._AC_UL320_.jpg',10051,4.3,'$43.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PRETTYGARDEN-Knitted-Cardigan-Sweater-Outwear/dp/B08DTFW6Y8/ref=sr_1_9?keywords=women%27s+clothing&qid=1703020384&sr=8-9',47,'2023-12-19 15:13:05.982219-06','2023-12-19 15:13:05.982219-06','www.amazon.com'),
+ (3642,'Amazon Essentials',NULL,'B08T7QWZRN','https://m.media-amazon.com/images/I/81Wrx4qX+kL._AC_UL320_.jpg',2880,4.4,'$33.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Sweater-Heather/dp/B08T7QWZRN/ref=sr_1_10?keywords=women%27s+clothing&qid=1703020384&sr=8-10',47,'2023-12-19 15:13:05.992021-06','2023-12-19 15:13:05.992021-06','www.amazon.com'),
+ (3643,'Sunzel',NULL,'B0BWH7LTLJ','https://aax-us-iad.amazon.com/e/loi/imp?b=JOjCjlCdAEBH1MRdEWmZti4AAAGMg-zR6gEAAAH2AQBvbm9fdHhuX2JpZDQgICBvbm9fdHhuX2ltcDEgICAvflLR',2937,4.3,'$22.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/ROjCjlCdAEBH1MRdEWmZti4AAAGMg-zRsgEAAAH2AQBvbm9fdHhuX2JpZDQgICBvbm9fdHhuX2ltcDEgICAvflLR/https://www.amazon.com/Sunzel-Leggings-Crossover-Control-Waisted/dp/B0BWH7LTLJ/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=women%27s+clothing&keywords=women%27s+clothing&pd_rd_i=B0BWH7LTLJ&pd_rd_r=10422572-eda9-4d87-a28b-f619124611c6&pd_rd_w=oLVU6&pd_rd_wg=lOmzq&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=JR3DAAPTHKG1YTW8QGKZ&qid=1703020384&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',47,'2023-12-19 15:13:05.999419-06','2023-12-19 15:13:05.999419-06','www.amazon.comhttps:'),
+ (3648,'Beaully',NULL,'B09H4G83H1','https://m.media-amazon.com/images/I/61LSELYQ26L._AC_UL320_.jpg',9924,4.4,'$34.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Beaully-Brushed-Flannel-Pocketed-Shacket/dp/B09H4G83H1/ref=sr_1_15?keywords=women%27s+clothing&qid=1703020384&sr=8-15',47,'2023-12-19 15:13:06.039262-06','2023-12-19 15:13:06.039262-06','www.amazon.com'),
+ (3649,'MANGOPOP',NULL,'B07KW7PDFJ','https://m.media-amazon.com/images/I/51jZphBMMmL._AC_UL320_.jpg',48987,4.3,'$26.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mangopop-Womens-Sleeve-Bodysuits-Jumpsuits/dp/B07KW7PDFJ/ref=sr_1_16?keywords=women%27s+clothing&qid=1703020384&sr=8-16',47,'2023-12-19 15:13:06.046011-06','2023-12-19 15:13:06.046011-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3650,'Amazon Essentials',NULL,'B079RQ7VW3','https://m.media-amazon.com/images/I/91f9q2VrtdL._AC_UL320_.jpg',21316,4.4,'$19.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Sweater-Heather/dp/B079RQ7VW3/ref=sr_1_17?keywords=women%27s+clothing&qid=1703020384&sr=8-17',47,'2023-12-19 15:13:06.053989-06','2023-12-19 15:13:06.053989-06','www.amazon.com'),
+ (3651,'Amazon Essentials',NULL,'B07BJ8CBZG','https://m.media-amazon.com/images/I/619KpiRJWWL._AC_UL320_.jpg',39680,4.3,'$19.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Sweatpant-X-Large/dp/B07BJ8CBZG/ref=sr_1_18?keywords=women%27s+clothing&qid=1703020384&sr=8-18',47,'2023-12-19 15:13:06.060478-06','2023-12-19 15:13:06.060478-06','www.amazon.com'),
+ (3652,'Dokotoo',NULL,'B0C9SKX7JR','https://m.media-amazon.com/images/I/81dQW+EgP0L._AC_UL320_.jpg',122,3.8,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Shirts-Sleeve-Fashion-Tshirts/dp/B0C9SKX7JR/ref=sr_1_19?keywords=women%27s+clothing&qid=1703020384&sr=8-19',47,'2023-12-19 15:13:06.06655-06','2023-12-19 15:13:06.06655-06','www.amazon.com'),
+ (3653,'Columbia',NULL,'B076VHNYHJ','https://m.media-amazon.com/images/I/610wZP7f+-L._AC_UL320_.jpg',55035,4.6,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Columbia-Womens-Springs-Classic-Heather/dp/B076VHNYHJ/ref=sr_1_20?keywords=women%27s+clothing&qid=1703020384&sr=8-20',47,'2023-12-19 15:13:06.074022-06','2023-12-19 15:13:06.074022-06','www.amazon.com'),
+ (3654,'Amazon Essentials',NULL,'B08R99V6KP','https://m.media-amazon.com/images/I/71PHuNqQeuS._AC_UL320_.jpg',149125,4.4,'$15.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Stretch-Classic-Assorted/dp/B08R99V6KP/ref=sr_1_21?keywords=women%27s+clothing&qid=1703020384&sr=8-21',47,'2023-12-19 15:13:06.080958-06','2023-12-19 15:13:06.080958-06','www.amazon.com'),
+ (3655,'YOUNGCHARM',NULL,'B098LCQRGP','https://m.media-amazon.com/images/I/717JYMI8wwL._AC_UL320_.jpg',20499,4.6,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/YOUNGCHARM-Leggings-Pockets-Women%EF%BC%8CHigh-BlackDGrayNavyBurgundy-L/dp/B098LCQRGP/ref=sr_1_22?keywords=women%27s+clothing&qid=1703020384&sr=8-22',47,'2023-12-19 15:13:06.088015-06','2023-12-19 15:13:06.088015-06','www.amazon.com'),
+ (3656,'Under Armour',NULL,'B0711M1S7S','https://m.media-amazon.com/images/I/71s1L8bOKTL._AC_UL320_.jpg',1445,4.6,'$23.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Womens-Metallic-Silver/dp/B0711M1S7S/ref=sr_1_23?keywords=women%27s+clothing&qid=1703020384&sr=8-23',47,'2023-12-19 15:13:06.0941-06','2023-12-19 15:13:06.0941-06','www.amazon.com'),
+ (3657,'U.S. Polo Assn.',NULL,'B0C6RCDDKK','https://m.media-amazon.com/images/I/71ZmgDS8a9L._AC_UL320_.jpg',145,4.4,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/U-S-Polo-Assn-Sweatpants-Charcoal/dp/B0C6RCDDKK/ref=sr_1_24?keywords=women%27s+clothing&qid=1703020384&sr=8-24',47,'2023-12-19 15:13:06.101076-06','2023-12-19 15:13:06.101076-06','www.amazon.com'),
+ (3658,'Dokotoo',NULL,'B08NDVQZLP','https://m.media-amazon.com/images/I/713pXx0rKZL._AC_UL320_.jpg',14331,4.4,'$35.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Womens-Corduroy-Shirts-Pockets/dp/B08NDVQZLP/ref=sr_1_25?keywords=women%27s+clothing&qid=1703020384&sr=8-25',47,'2023-12-19 15:13:06.108461-06','2023-12-19 15:13:06.108461-06','www.amazon.com'),
+ (3659,'PRETTYGARDEN',NULL,'B08HLSZ9K9','https://m.media-amazon.com/images/I/61yici4R5IL._AC_UL320_.jpg',19827,4.1,'$40.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PRETTYGARDEN-Crewneck-Pullover-Sweatsuits-Tracksuits/dp/B08HLSZ9K9/ref=sr_1_26?keywords=women%27s+clothing&qid=1703020384&sr=8-26',47,'2023-12-19 15:13:06.115219-06','2023-12-19 15:13:06.115219-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3660,'Trendy Queen',NULL,'B0B75658TP','https://m.media-amazon.com/images/I/71mszxK76vL._AC_UL320_.jpg',333,3.7,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Blouses-Crochet-Fashion/dp/B0B75658TP/ref=sr_1_27?keywords=women%27s+clothing&qid=1703020384&sr=8-27',47,'2023-12-19 15:13:06.123068-06','2023-12-19 15:13:06.123068-06','www.amazon.com'),
+ (3661,'Amazon Essentials',NULL,'B07CMDMT69','https://m.media-amazon.com/images/I/81JVnj7aO4L._AC_UL320_.jpg',14221,4.2,'$16.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Stretch-Jegging/dp/B07CMDMT69/ref=sr_1_28?keywords=women%27s+clothing&qid=1703020384&sr=8-28',47,'2023-12-19 15:13:06.130641-06','2023-12-19 15:13:06.130641-06','www.amazon.com'),
+ (3662,'Kissfix',NULL,'B09BF8NMHQ','https://m.media-amazon.com/images/I/61lE-5VL9sL._AC_UL320_.jpg',7443,4.2,'$21.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kissfix-Fashion-Sleeve-Shirts-Clothes/dp/B09BF8NMHQ/ref=sr_1_29?keywords=women%27s+clothing&qid=1703020384&sr=8-29',47,'2023-12-19 15:13:06.138882-06','2023-12-19 15:13:06.138882-06','www.amazon.com'),
+ (3663,'Warner''s',NULL,'B01NARXN9F','https://m.media-amazon.com/images/I/91aBPAJ5XfL._AC_UL320_.jpg',42673,4.4,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Warners-Underarm-Smoothing-Seamless-RM3911A/dp/B01NARXN9F/ref=sr_1_30?keywords=women%27s+clothing&qid=1703020384&sr=8-30',47,'2023-12-19 15:13:06.145482-06','2023-12-19 15:13:06.145482-06','www.amazon.com'),
+ (3664,'AUTOMET',NULL,'B09Z2PXL9C','https://m.media-amazon.com/images/I/61zcpw4yQyL._AC_UL320_.jpg',5904,4.4,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUTOMET-Sweatpants-Pockets-Lounge-Pants-Womens-BlackGrey/dp/B09Z2PXL9C/ref=sr_1_31?keywords=women%27s+clothing&qid=1703020384&sr=8-31',47,'2023-12-19 15:13:06.153304-06','2023-12-19 15:13:06.153304-06','www.amazon.com'),
+ (3665,'ZESICA',NULL,'B0CBTVYL8X','https://m.media-amazon.com/images/I/71FJisKWczL._AC_UL320_.jpg',158,4.4,'$41.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ZESICA-Striped-Knitted-Oversized-Pullover/dp/B0CBTVYL8X/ref=sr_1_32?keywords=women%27s+clothing&qid=1703020384&sr=8-32',47,'2023-12-19 15:13:06.159819-06','2023-12-19 15:13:06.159819-06','www.amazon.com'),
+ (3666,'LILLUSORY',NULL,'B0B51TJV4N','https://m.media-amazon.com/images/I/61DUXE1c43L._AC_UL320_.jpg',1574,4.3,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sweater-Slouchy-Cardigans-Oversized-Outwear/dp/B0B51TJV4N/ref=sr_1_33?keywords=women%27s+clothing&qid=1703020384&sr=8-33',47,'2023-12-19 15:13:06.1668-06','2023-12-19 15:13:06.1668-06','www.amazon.com'),
+ (3667,'PRETTYGARDEN',NULL,'B09GM76N8N','https://m.media-amazon.com/images/I/71GyXu0I3iL._AC_UL320_.jpg',5907,4.3,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PRETTYGARDEN-Flannel-Boyfriend-Shacket-B_Plaid/dp/B09GM76N8N/ref=sr_1_34?keywords=women%27s+clothing&qid=1703020384&sr=8-34',47,'2023-12-19 15:13:06.174156-06','2023-12-19 15:13:06.174156-06','www.amazon.com'),
+ (3668,'Under Armour',NULL,'B0872F71ZV','https://m.media-amazon.com/images/I/4157-oK4IPL._AC_UL320_.jpg',2555,4.5,'$23.82','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-HeatGear-Leggings-Midnight/dp/B0872F71ZV/ref=sr_1_35?keywords=women%27s+clothing&qid=1703020384&sr=8-35',47,'2023-12-19 15:13:06.180763-06','2023-12-19 15:13:06.180763-06','www.amazon.com'),
+ (3669,'morhuduck',NULL,'B09BVM5MB3','https://m.media-amazon.com/images/I/713VJLfVoCL._AC_UL320_.jpg',2215,4.1,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Morhuduck-Hoodies-Sweatshirt-Drawstring-Pullover/dp/B09BVM5MB3/ref=sr_1_36?keywords=women%27s+clothing&qid=1703020384&sr=8-36',47,'2023-12-19 15:13:06.188618-06','2023-12-19 15:13:06.188618-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3670,'Dokotoo',NULL,'B08MT2ZPYM','https://m.media-amazon.com/images/I/61CZwYbH6pL._AC_UL320_.jpg',2352,3.9,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Crewneck-Sweaters-Oversized-Pullover/dp/B08MT2ZPYM/ref=sr_1_37?keywords=women%27s+clothing&qid=1703020384&sr=8-37',47,'2023-12-19 15:13:06.196185-06','2023-12-19 15:13:06.196185-06','www.amazon.com'),
+ (3671,'THE GYM PEOPLE',NULL,'B07ZP7BZMD','https://m.media-amazon.com/images/I/615YipeumnL._AC_UL320_.jpg',21403,4.3,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GYM-PEOPLE-Athletic-Leggings-Training/dp/B07ZP7BZMD/ref=sr_1_38?keywords=women%27s+clothing&qid=1703020384&sr=8-38',47,'2023-12-19 15:13:06.204089-06','2023-12-19 15:13:06.204089-06','www.amazon.com'),
+ (3672,'Dokotoo',NULL,'B0CCTLQJJH','https://m.media-amazon.com/images/I/71v2mI40CtL._AC_UL320_.jpg',277,4.3,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Tshirts-Shirts-Fashion-T-Shirts/dp/B0CCTLQJJH/ref=sr_1_39?keywords=women%27s+clothing&qid=1703020384&sr=8-39',47,'2023-12-19 15:13:06.211076-06','2023-12-19 15:13:06.211076-06','www.amazon.com'),
+ (3673,'ODODOS',NULL,'B0B3M6K9JJ','https://m.media-amazon.com/images/I/81ZBjcfQTsL._AC_UL320_.jpg',10645,4.4,'$28.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ODODOS-Lightweight-Rib-Knit-Camisole-Taupe/dp/B0B3M6K9JJ/ref=sr_1_40?keywords=women%27s+clothing&qid=1703020384&sr=8-40',47,'2023-12-19 15:13:06.221603-06','2023-12-19 15:13:06.221603-06','www.amazon.com'),
+ (3674,'Hanes',NULL,'B0169P8PBK','https://m.media-amazon.com/images/I/71slb+CkbuL._AC_UL320_.jpg',65320,3.9,'$12.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Womens-Middle-Sweatpant-Heather/dp/B0169P8PBK/ref=sr_1_41?keywords=women%27s+clothing&qid=1703020384&sr=8-41',47,'2023-12-19 15:13:06.227964-06','2023-12-19 15:13:06.227964-06','www.amazon.com'),
+ (3675,'Roxy',NULL,'B0BMWDBBB7','https://m.media-amazon.com/images/I/612VGyYVGKL._AC_UL320_.jpg',294,4.4,'$9.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Roxy-Womens-3-Pack-Tonal-Heather/dp/B0BMWDBBB7/ref=sr_1_42?keywords=women%27s+clothing&qid=1703020384&sr=8-42',47,'2023-12-19 15:13:06.234775-06','2023-12-19 15:13:06.234775-06','www.amazon.com'),
+ (3676,'Amazon Essentials',NULL,'B07QF68HG2','https://m.media-amazon.com/images/I/91aDiyJr4tS._AC_UL320_.jpg',19597,4.4,'$28.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Standard-Lightweight-Crewneck/dp/B07QF68HG2/ref=sr_1_43?keywords=women%27s+clothing&qid=1703020384&sr=8-43',47,'2023-12-19 15:13:06.241967-06','2023-12-19 15:13:06.241967-06','www.amazon.com'),
+ (3677,'ZAFUL',NULL,'B098XK6DLM','https://m.media-amazon.com/images/I/71UzN3SnA7S._AC_UL320_.jpg',750,4.0,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ZAFUL-Knitwear-Bohemian-Pullover-Shoulder/dp/B098XK6DLM/ref=sr_1_44?keywords=women%27s+clothing&qid=1703020384&sr=8-44',47,'2023-12-19 15:13:06.249064-06','2023-12-19 15:13:06.249064-06','www.amazon.com'),
+ (3678,'AUTOMET',NULL,'B0C7KC3Z9D','https://m.media-amazon.com/images/I/61hDQfyQtrL._AC_UL320_.jpg',1094,4.5,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUTOMET-Sweatshirts-Pullover-Oversized-Sweaters/dp/B0C7KC3Z9D/ref=sr_1_45?keywords=women%27s+clothing&qid=1703020384&sr=8-45',47,'2023-12-19 15:13:06.25645-06','2023-12-19 15:13:06.25645-06','www.amazon.com'),
+ (3679,'Dockers',NULL,'B09YCRG1BD','https://m.media-amazon.com/images/I/51-WLcWtz7L._AC_UL320_.jpg',30,4.4,'$4.11','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dockers-Womens-Beautiful-Black-Medium/dp/B09YCRG1BD/ref=sr_1_46?keywords=women%27s+clothing&qid=1703020384&sr=8-46',47,'2023-12-19 15:13:06.264632-06','2023-12-19 15:13:06.264632-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3680,'Hanes',NULL,'B0170AD284','https://m.media-amazon.com/images/I/81GZlWz-bIL._AC_UL320_.jpg',11987,4.2,'$14.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Womens-French-Charcoal-Heather/dp/B0170AD284/ref=sr_1_47?keywords=women%27s+clothing&qid=1703020384&sr=8-47',47,'2023-12-19 15:13:06.272557-06','2023-12-19 15:13:06.272557-06','www.amazon.com'),
+ (3681,'AUROLA',NULL,'B0B7GCP25D','https://m.media-amazon.com/images/I/61if9N2mdfL._AC_UL320_.jpg',4734,4.4,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUROLA-Collection-Workout-Shorts-Women/dp/B0B7GCP25D/ref=sr_1_48?keywords=women%27s+clothing&qid=1703020384&sr=8-48',47,'2023-12-19 15:13:06.280799-06','2023-12-19 15:13:06.280799-06','www.amazon.com'),
+ (4567,'SPECIAL MADE Collapsible Water Bottles Cups Leakproof Valve Reusable BPA Free Silicone Foldable Travel Water Bottle Cup for Gym Camping Hiking Travel Sports Lightweight Durable',NULL,'B08QJ53Y5G','https://m.media-amazon.com/images/I/51EUDKOg1qS._AC_UL320_.jpg',7765,4.1,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SPECIAL-MADE-Collapsible-Leakproof-Lightweight/dp/B08QJ53Y5G/ref=sr_1_65?keywords=travel+accessories&qid=1703020686&sr=8-65',57,'2023-12-19 15:18:07.953211-06','2023-12-19 15:18:07.953211-06','www.amazon.com'),
+ (3683,'Ovanviso',NULL,'B09MJV8MLV','https://m.media-amazon.com/images/I/61sbg+nwfLL._AC_UL320_.jpg',651,4.3,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Njg1MTczMDYwMjk5NzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwNjYyNjk2NDU1OTg6OjA6Og&url=%2FOvanviso-Sweatshirt-Crewneck-Pullover-Lightweight%2Fdp%2FB09MJV8MLV%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB09MJV8MLV%26pd_rd_r%3D1a4e0cdd-725b-4703-b68f-7afa0223949d%26pd_rd_w%3Dc0y9E%26pd_rd_wg%3DZDlhD%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:06.297763-06','2023-12-19 15:13:06.297763-06','www.amazon.com'),
+ (3684,'G Gradual',NULL,'B09ZV32BMQ','https://m.media-amazon.com/images/I/71OXp1ea4uL._AC_UL320_.jpg',328,4.2,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Njg1MTczMDYwMjk5NzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNjA1NzM2MzY0OTg6OjE6Og&url=%2FGradual-Womens-Skorts-White-Small%2Fdp%2FB09ZV32BMQ%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB09ZV32BMQ%26pd_rd_r%3D1a4e0cdd-725b-4703-b68f-7afa0223949d%26pd_rd_w%3Dc0y9E%26pd_rd_wg%3DZDlhD%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:06.306496-06','2023-12-19 15:13:06.306496-06','www.amazon.com'),
+ (3685,'LuckyMore',NULL,'B0C8SHL68Q','https://m.media-amazon.com/images/I/71ESOHBk2YL._AC_UL320_.jpg',69,4.2,'$25.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Njg1MTczMDYwMjk5NzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAxMDYxNTA2OTg0MDI6OjI6Og&url=%2FLuckyMore-Womens-Lightweight-Underwear-Apricot%2Fdp%2FB0C8SHL68Q%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0C8SHL68Q%26pd_rd_r%3D1a4e0cdd-725b-4703-b68f-7afa0223949d%26pd_rd_w%3Dc0y9E%26pd_rd_wg%3DZDlhD%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:06.314986-06','2023-12-19 15:13:06.314986-06','www.amazon.com'),
+ (3686,'ANRABESS',NULL,'B0C69DCX7J','https://m.media-amazon.com/images/I/61jxmL7ny9L._MCnd_AC_UL320_.jpg',443,4.2,'$26.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Njg1MTczMDYwMjk5NzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwOTg5OTUxNTQ3MDI6OjM6Og&url=%2FANRABESS-Athletic-Exercise-Everyday-1125qianka-M%2Fdp%2FB0C69DCX7J%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0C69DCX7J%26pd_rd_r%3D1a4e0cdd-725b-4703-b68f-7afa0223949d%26pd_rd_w%3Dc0y9E%26pd_rd_wg%3DZDlhD%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:06.32318-06','2023-12-19 15:13:06.32318-06','www.amazon.com'),
+ (3682,'DSPSAM',NULL,'B0CGVSGYGL','https://m.media-amazon.com/images/I/71rh7CA214L._AC_UL320_.jpg',142,4.3,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Njg1MTczMDYwMjk5NzE3OjE3MDMwMjAzODQ6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwODAyNjc0OTg1MDI6OjQ6Og&url=%2FDSPSAM-Turtle-Academia-Clothing-Turtleneck%2Fdp%2FB0CGVSGYGL%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0CGVSGYGL%26pd_rd_r%3D1a4e0cdd-725b-4703-b68f-7afa0223949d%26pd_rd_w%3Dc0y9E%26pd_rd_wg%3DZDlhD%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DJR3DAAPTHKG1YTW8QGKZ%26qid%3D1703020384%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:06.289517-06','2023-12-19 15:13:06.330435-06','www.amazon.com'),
+ (3687,'MAYAMANG',NULL,'B08JYMLP47','https://m.media-amazon.com/images/I/71LZZEYdJ2L._AC_UL320_.jpg',4259,4.0,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfYXRmX25leHQ6MjAwMTA5NTA4NzYwMTk4OjowOjo&url=%2FMAYAMANG-Womens-Buttons-T-Shirts-sleeve-white%2Fdp%2FB08JYMLP47%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',47,'2023-12-19 15:13:13.564576-06','2023-12-19 15:13:13.564576-06','www.amazon.com'),
+ (3688,'Ficerd',NULL,'B0CC96Z47F','https://m.media-amazon.com/images/I/91mEbAinWTL._AC_UL320_.jpg',708,4.5,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfYXRmX25leHQ6MzAwMTAyNDI2ODU2NDAyOjowOjo&url=%2FFicerd-Womens-Pleated-Blouses-T-Shirts%2Fdp%2FB0CC96Z47F%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',47,'2023-12-19 15:13:13.584572-06','2023-12-19 15:13:13.584572-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3689,'Lotusmile',NULL,'B09BZBWZRZ','https://m.media-amazon.com/images/I/61KwE3X3NfL._AC_UL320_.jpg',2126,4.4,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfYXRmX25leHQ6MzAwMDUyNDk5NDY3OTAyOjowOjo&url=%2FSweaters-Leggings-Lotusmile-Pullover-Clothes%2Fdp%2FB09BZBWZRZ%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',47,'2023-12-19 15:13:13.593454-06','2023-12-19 15:13:13.593454-06','www.amazon.com'),
+ (3690,'Kancystore',NULL,'B0991XC8W6','https://m.media-amazon.com/images/I/71VB8ApcQpL._AC_UL320_.jpg',3226,4.2,'$24.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfYXRmX25leHQ6MjAwMDI0MDIyODMyNDk4OjowOjo&url=%2FKancystore-Womens-Ribbed-Sweaters-Blouses%2Fdp%2FB0991XC8W6%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',47,'2023-12-19 15:13:13.6005-06','2023-12-19 15:13:13.6005-06','www.amazon.com'),
+ (3691,'Dokotoo',NULL,'B099J6JVM1','https://m.media-amazon.com/images/I/51oZ6Di38QL._AC_UL320_.jpg',3287,4.4,'$39.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Fashion-Sweatshirts-Drawstring-Pullovers/dp/B099J6JVM1/ref=sr_1_53?keywords=women%27s+clothing&qid=1703020392&sr=8-53',47,'2023-12-19 15:13:13.607975-06','2023-12-19 15:13:13.607975-06','www.amazon.com'),
+ (3692,'AUTOMET',NULL,'B0CBDGZ9WV','https://m.media-amazon.com/images/I/51Cah0oW-iL._AC_UL320_.jpg',221,4.1,'$50.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUTOMET-Thanksgiving-Sweatsuits-Sweatshirts-Sweatpants/dp/B0CBDGZ9WV/ref=sr_1_54?keywords=women%27s+clothing&qid=1703020392&sr=8-54',47,'2023-12-19 15:13:13.616879-06','2023-12-19 15:13:13.616879-06','www.amazon.com'),
+ (3693,'OQQ',NULL,'B0BR5JKBR4','https://m.media-amazon.com/images/I/81miroNz5XL._AC_UL320_.jpg',5527,4.3,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OQQ-Womens-Seamless-Workout-Exercise/dp/B0BR5JKBR4/ref=sr_1_55?keywords=women%27s+clothing&qid=1703020392&sr=8-55',47,'2023-12-19 15:13:13.624576-06','2023-12-19 15:13:13.624576-06','www.amazon.com'),
+ (4568,'Longang 110 Lbs Digital Hanging Luggage Scale with Backlit for Travel, Rubber Paint Handle and Battery Included (Gold, 1 Pc)',NULL,'B0BX4CZMP4','https://m.media-amazon.com/images/I/610izMpd8ZL._AC_UL320_.jpg',5751,4.7,'$7.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Longang-Digital-Hanging-Included-Gold/dp/B0BX4CZMP4/ref=sr_1_66?keywords=travel+accessories&qid=1703020686&sr=8-66',57,'2023-12-19 15:18:07.958869-06','2023-12-19 15:18:07.958869-06','www.amazon.com'),
+ (3723,'YESNO',NULL,'B07Z1YVCP4','https://m.media-amazon.com/images/I/71KBWxoKKfL._AC_UL320_.jpg',13791,4.5,'$44.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/YESNO-Sweaters-Knitted-Pullover-Printed/dp/B07Z1YVCP4/ref=sr_1_80?keywords=women%27s+clothing&qid=1703020392&sr=8-80',47,'2023-12-19 15:13:13.850625-06','2023-12-19 15:13:13.850625-06','www.amazon.com'),
+ (3695,'Vldnery',NULL,'B0BD7KG9MP','https://m.media-amazon.com/images/I/811RV48Ox6L._AC_UL320_.jpg',751,4.2,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTkxMDkxMDYzNDQyNzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA1NTI5Mjc3NDgwMjo6MDo6&url=%2FVldnery-Moisture-Wicking-Workout-YogaTops%2Fdp%2FB0BD7KG9MP%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0BD7KG9MP%26pd_rd_r%3Da384ddd6-6c41-4d1c-9add-a416c284aba8%26pd_rd_w%3DgxKCt%26pd_rd_wg%3DT4ydM%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:13.639439-06','2023-12-19 15:13:13.639439-06','www.amazon.com'),
+ (3696,'Vldnery',NULL,'B099PCH25S','https://m.media-amazon.com/images/I/81-Fk2L21ZL._AC_UL320_.jpg',327,4.2,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTkxMDkxMDYzNDQyNzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDExMzg5NTIyNDg5ODo6MTo6&url=%2FWorkout-Exercise-Clothes-Clothing-Moisture%2Fdp%2FB099PCH25S%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB099PCH25S%26pd_rd_r%3Da384ddd6-6c41-4d1c-9add-a416c284aba8%26pd_rd_w%3DgxKCt%26pd_rd_wg%3DT4ydM%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-50-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:13.646305-06','2023-12-19 15:13:13.646305-06','www.amazon.com'),
+ (3697,'Soneven',NULL,'B0BBRJK7WZ','https://m.media-amazon.com/images/I/81vgfHlwOdL._AC_UL320_.jpg',463,4.5,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTkxMDkxMDYzNDQyNzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA2Njg0MDg5MTUwMjo6Mjo6&url=%2FThermal-Shirts-Sleeve-Winter-Undershirt%2Fdp%2FB0BBRJK7WZ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0BBRJK7WZ%26pd_rd_r%3Da384ddd6-6c41-4d1c-9add-a416c284aba8%26pd_rd_w%3DgxKCt%26pd_rd_wg%3DT4ydM%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:13.653115-06','2023-12-19 15:13:13.653115-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3698,'Soneven',NULL,'B09P7XV9NZ','https://m.media-amazon.com/images/I/71wxuETW3AL._AC_UL320_.jpg',716,4.3,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTkxMDkxMDYzNDQyNzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA3NDk1NTM0NDIwMjo6Mzo6&url=%2FWomens-Shirts-Moisture-Wicking-Apparel%2Fdp%2FB09P7XV9NZ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB09P7XV9NZ%26pd_rd_r%3Da384ddd6-6c41-4d1c-9add-a416c284aba8%26pd_rd_w%3DgxKCt%26pd_rd_wg%3DT4ydM%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:13.66012-06','2023-12-19 15:13:13.66012-06','www.amazon.com'),
+ (3694,'Aloodor',NULL,'B099JHWQC1','https://m.media-amazon.com/images/I/61wbeA7LG2L._AC_UL320_.jpg',6335,4.3,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTkxMDkxMDYzNDQyNzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA4OTEzNDU5NjU2MTo6NDo6&url=%2FLounge-Sweatsuits-Casual-Loungewear-Clothing%2Fdp%2FB099JHWQC1%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB099JHWQC1%26pd_rd_r%3Da384ddd6-6c41-4d1c-9add-a416c284aba8%26pd_rd_w%3DgxKCt%26pd_rd_wg%3DT4ydM%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',47,'2023-12-19 15:13:13.632187-06','2023-12-19 15:13:13.666096-06','www.amazon.com'),
+ (3699,'Trendy Queen',NULL,'B0B5H33HTJ','https://m.media-amazon.com/images/I/81O6ERy19CL._AC_UL320_.jpg',6141,4.4,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Oversized-Pullover-Sweatshirts/dp/B0B5H33HTJ/ref=sr_1_56?keywords=women%27s+clothing&qid=1703020392&sr=8-56',47,'2023-12-19 15:13:13.674101-06','2023-12-19 15:13:13.674101-06','www.amazon.com'),
+ (3700,'MixShe',NULL,'B09C89F9LN','https://m.media-amazon.com/images/I/71-u82AOLmL._AC_UL320_.jpg',4446,4.5,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sweatshirts-Lightweight-Sweaters-Sudaderas-Playeras/dp/B09C89F9LN/ref=sr_1_57?keywords=women%27s+clothing&qid=1703020392&sr=8-57',47,'2023-12-19 15:13:13.680402-06','2023-12-19 15:13:13.680402-06','www.amazon.com'),
+ (3701,'LILLUSORY',NULL,'B0BFL2XLY5','https://m.media-amazon.com/images/I/61CvT1de7IL._AC_UL320_.jpg',1682,4.4,'$48.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LILLUSORY-Crewneck-Batwing-Oversized-Pullover/dp/B0BFL2XLY5/ref=sr_1_58?keywords=women%27s+clothing&qid=1703020392&sr=8-58',47,'2023-12-19 15:13:13.688619-06','2023-12-19 15:13:13.688619-06','www.amazon.com'),
+ (3702,'Bluetime',NULL,'B09HH7NLFX','https://m.media-amazon.com/images/I/71FeqQ717ZL._AC_UL320_.jpg',3889,4.3,'$29.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjMwMDA3MDU1NzkzNTMwMjo6MDo6&url=%2FWomens-Sleeve-Business-Casual-Clothes%2Fdp%2FB09HH7NLFX%2Fref%3Dsr_1_59_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-59-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.696297-06','2023-12-19 15:13:13.696297-06','www.amazon.com'),
+ (3703,'CHICGAL',NULL,'B09KNVP72Z','https://m.media-amazon.com/images/I/81cjonvNR8L._AC_UL320_.jpg',61474,4.4,'$15.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjIwMDAzMjczMTQ2MzM5ODo6MDo6&url=%2FKimono-Cardigan-Coverup-Chiffon-WhiteXL%2Fdp%2FB09KNVP72Z%2Fref%3Dsr_1_60_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-60-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.704298-06','2023-12-19 15:13:13.704298-06','www.amazon.com'),
+ (3704,'Halife',NULL,'B08DCH43FM','https://m.media-amazon.com/images/I/61M2JcSni3L._AC_UL320_.jpg',4040,4.4,'$25.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjIwMDA3NTE2Nzg2Mzk3MTo6MDo6&url=%2FColor-Sleeve-Shirts-Leggings-Cotton%2Fdp%2FB08DCH43FM%2Fref%3Dsr_1_61_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.710863-06','2023-12-19 15:13:13.710863-06','www.amazon.com'),
+ (3705,'EVALESS',NULL,'B0C9DQNKVP','https://m.media-amazon.com/images/I/61P3PrQXtPL._AC_UL320_.jpg',54,4.3,'$25.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjMwMDA2OTQ4OTM2NDcwMjo6MDo6&url=%2FEVALESS-Lantern-Sweaters-Lightweight-Pullover%2Fdp%2FB0C9DQNKVP%2Fref%3Dsr_1_62_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-62-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.720501-06','2023-12-19 15:13:13.720501-06','www.amazon.com'),
+ (3706,'Limerose',NULL,'B08TBHXNT5','https://m.media-amazon.com/images/I/71OiTUtElUL._AC_UL320_.jpg',3430,4.2,'$23.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Limerose-Womens-Sleeve-Button-X-Large/dp/B08TBHXNT5/ref=sr_1_63?keywords=women%27s+clothing&qid=1703020392&sr=8-63',47,'2023-12-19 15:13:13.727531-06','2023-12-19 15:13:13.727531-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3707,'Amazon Essentials',NULL,'B07XLLKJPJ','https://m.media-amazon.com/images/I/81gCrqutl3L._AC_UL320_.jpg',3251,4.1,'$17.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Classic-Fit-Long-Sleeve-Crewneck/dp/B07XLLKJPJ/ref=sr_1_64?keywords=women%27s+clothing&qid=1703020392&sr=8-64',47,'2023-12-19 15:13:13.73466-06','2023-12-19 15:13:13.73466-06','www.amazon.com'),
+ (3708,'Jockey',NULL,'B0C6DLDGB2','https://m.media-amazon.com/images/I/71V82yLoypL._AC_UL320_.jpg',29,4.6,'$3.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jockey-Womens-Activewear-Tank-Rose/dp/B0C6DLDGB2/ref=sr_1_65?keywords=women%27s+clothing&qid=1703020392&sr=8-65',47,'2023-12-19 15:13:13.743573-06','2023-12-19 15:13:13.743573-06','www.amazon.com'),
+ (3709,'AUTOMET',NULL,'B0CCDXT9Y9','https://m.media-amazon.com/images/I/71SsIFvL0kL._AC_UL320_.jpg',112,4.1,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUTOMET-Shacket-Clothes-Fashion-Oversized/dp/B0CCDXT9Y9/ref=sr_1_66?keywords=women%27s+clothing&qid=1703020392&sr=8-66',47,'2023-12-19 15:13:13.749729-06','2023-12-19 15:13:13.749729-06','www.amazon.com'),
+ (3710,'Mystry Zone',NULL,'B09CMDWZ13','https://m.media-amazon.com/images/I/71Xi2wm-nVL._AC_UL320_.jpg',12330,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjMwMDA0MzIxMjc0MTEwMjo6MDo6&url=%2FWomen-Vintage-Floral-Sleeve-Clothing%2Fdp%2FB09CMDWZ13%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1%26smid%3DA3OS1FJCMX3WDK',47,'2023-12-19 15:13:13.756553-06','2023-12-19 15:13:13.756553-06','www.amazon.com'),
+ (3711,'BETTE BOUTIK',NULL,'B0BYDNVGM2','https://m.media-amazon.com/images/I/71PVxtxo0cL._AC_UL320_.jpg',1066,4.4,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjIwMDE1NjIyNzA5NzA5ODo6MDo6&url=%2FWomens-Blouse-Shirts-WRCosmos-Medium%2Fdp%2FB0BYDNVGM2%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.763208-06','2023-12-19 15:13:13.763208-06','www.amazon.com'),
+ (3712,'BeadChica',NULL,'B0C7QJNMP5','https://m.media-amazon.com/images/I/611K3tKNaaL._AC_UL320_.jpg',281,3.9,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjMwMDA1OTIwMTk5MTAwMjo6MDo6&url=%2FBeadChica-Womens-Sweatshirt-Pullover-Fit-Gradient-L%2Fdp%2FB0C7QJNMP5%2Fref%3Dsr_1_69_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-69-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.770675-06','2023-12-19 15:13:13.770675-06','www.amazon.com'),
+ (3713,'Bluetime',NULL,'B0BCD5SCRX','https://m.media-amazon.com/images/I/719VsEyJIgL._AC_UL320_.jpg',679,4.3,'$29.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxODMxMzU0Nzg5MzEwNzE3OjE3MDMwMjAzOTI6c3BfbXRmOjMwMDAyNTQ2NzY1NTMwMjo6MDo6&url=%2FWomens-Outfits-Juniors-Clothing-Caramel%2Fdp%2FB0BCD5SCRX%2Fref%3Dsr_1_70_sspa%3Fkeywords%3Dwomen%2527s%2Bclothing%26qid%3D1703020392%26sr%3D8-70-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',47,'2023-12-19 15:13:13.777315-06','2023-12-19 15:13:13.777315-06','www.amazon.com'),
+ (3714,'Amazon Essentials',NULL,'B07RMMHMRY','https://m.media-amazon.com/images/I/815C+WHOQhL._AC_UL320_.jpg',17858,4.2,'$27.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Jegging-Regular/dp/B07RMMHMRY/ref=sr_1_71?keywords=women%27s+clothing&qid=1703020392&sr=8-71',47,'2023-12-19 15:13:13.783596-06','2023-12-19 15:13:13.783596-06','www.amazon.com'),
+ (3715,'Newshows',NULL,'B08DHCFCYP','https://m.media-amazon.com/images/I/61poqbMYtkL._AC_UL320_.jpg',3340,4.5,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Newshows-Womens-Stretch-Pullover-Sweater/dp/B08DHCFCYP/ref=sr_1_72?keywords=women%27s+clothing&qid=1703020392&sr=8-72',47,'2023-12-19 15:13:13.790702-06','2023-12-19 15:13:13.790702-06','www.amazon.com'),
+ (3716,'Trendy Queen',NULL,'B0BGM47VD7','https://m.media-amazon.com/images/I/71nSvRRNe0L._AC_UL320_.jpg',231,3.9,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Crochet-Clothes-Fashion/dp/B0BGM47VD7/ref=sr_1_73?keywords=women%27s+clothing&qid=1703020392&sr=8-73',47,'2023-12-19 15:13:13.796691-06','2023-12-19 15:13:13.796691-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3717,'MANGOPOP',NULL,'B07VQVKXCM','https://m.media-amazon.com/images/I/61h2b+725SL._AC_UL320_.jpg',9979,4.3,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MANGOPOP-Bodysuits-Women-Sleeve-Square/dp/B07VQVKXCM/ref=sr_1_74?keywords=women%27s+clothing&qid=1703020392&sr=8-74',47,'2023-12-19 15:13:13.804451-06','2023-12-19 15:13:13.804451-06','www.amazon.com'),
+ (3718,'Trendy Queen',NULL,'B0C65QBS2B','https://m.media-amazon.com/images/I/61vTPJCGCjL._AC_UL320_.jpg',1396,4.6,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Oversized-Sweatshirts-Sweaters/dp/B0C65QBS2B/ref=sr_1_75?keywords=women%27s+clothing&qid=1703020392&sr=8-75',47,'2023-12-19 15:13:13.81355-06','2023-12-19 15:13:13.81355-06','www.amazon.com'),
+ (3719,'ANRABESS',NULL,'B0BCPJH5LW','https://m.media-amazon.com/images/I/81TmhuoMY+L._AC_UL320_.jpg',2237,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ANRABESS-Cardigan-Sweater-715kaqi-L-Apricot/dp/B0BCPJH5LW/ref=sr_1_76?keywords=women%27s+clothing&qid=1703020392&sr=8-76',47,'2023-12-19 15:13:13.822248-06','2023-12-19 15:13:13.822248-06','www.amazon.com'),
+ (3720,'WDIRARA',NULL,'B07LC6K21T','https://m.media-amazon.com/images/I/71koXSiH7IL._AC_UL320_.jpg',8452,4.1,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WDIRARA-Stretchy-Regular-Fashion-Leggings/dp/B07LC6K21T/ref=sr_1_77?keywords=women%27s+clothing&qid=1703020392&sr=8-77',47,'2023-12-19 15:13:13.82848-06','2023-12-19 15:13:13.82848-06','www.amazon.com'),
+ (3721,'SHAPERX',NULL,'B0B1LVKJ4Q','https://m.media-amazon.com/images/I/71EPHz3fArL._AC_UL320_.jpg',26928,4.1,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SHAPERX-Shapewear-Sculpting-SZ5215-Black-XXS-XS/dp/B0B1LVKJ4Q/ref=sr_1_78?keywords=women%27s+clothing&qid=1703020392&sr=8-78',47,'2023-12-19 15:13:13.836912-06','2023-12-19 15:13:13.836912-06','www.amazon.com'),
+ (3722,'Amazon Essentials',NULL,'B07R763XGR','https://m.media-amazon.com/images/I/91uhfZPLaCL._AC_UL320_.jpg',13754,4.3,'$20.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Crewneck-Sweatshirt/dp/B07R763XGR/ref=sr_1_79?keywords=women%27s+clothing&qid=1703020392&sr=8-79',47,'2023-12-19 15:13:13.843773-06','2023-12-19 15:13:13.843773-06','www.amazon.com'),
+ (3725,'BALEAF',NULL,'B07WYDKY2Z','https://m.media-amazon.com/images/I/51SIUwwT6wL._AC_UL320_.jpg',29895,4.4,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BALEAF-Leggings-Thermal-Waisted-Pocketed/dp/B07WYDKY2Z/ref=sr_1_82?keywords=women%27s+clothing&qid=1703020392&sr=8-82',47,'2023-12-19 15:13:13.865138-06','2023-12-19 15:13:13.865138-06','www.amazon.com'),
+ (3726,'Trendy Queen',NULL,'B0B63YDB9F','https://m.media-amazon.com/images/I/61MQqc51uOL._AC_UL320_.jpg',3114,4.4,'$34.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Womens-Corduroy-Shacket-Shackets-Outfits/dp/B0B63YDB9F/ref=sr_1_83?keywords=women%27s+clothing&qid=1703020392&sr=8-83',47,'2023-12-19 15:13:13.872212-06','2023-12-19 15:13:13.872212-06','www.amazon.com'),
+ (3727,'Warner''s',NULL,'B0948V78CW','https://m.media-amazon.com/images/I/71FK7qTJtpL._AC_UL320_.jpg',14272,4.4,'$12.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Warners-Blissful-Benefits-Hipster-Panties/dp/B0948V78CW/ref=sr_1_84?keywords=women%27s+clothing&qid=1703020392&sr=8-84',47,'2023-12-19 15:13:13.880406-06','2023-12-19 15:13:13.880406-06','www.amazon.com'),
+ (3728,'GOLDPKF',NULL,'B07WR54MJ9','https://m.media-amazon.com/images/I/71gb9B5QmnL._AC_UL320_.jpg',2976,4.2,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GOLDPKF-Lightweight-Patchwork-Pullover-Sweatshirts/dp/B07WR54MJ9/ref=sr_1_85?keywords=women%27s+clothing&qid=1703020392&sr=8-85',47,'2023-12-19 15:13:13.887805-06','2023-12-19 15:13:13.887805-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3729,'Fruit of the Loom',NULL,'B0BTB663JT','https://m.media-amazon.com/images/I/71HDoeA3xaL._AC_UL320_.jpg',72828,4.4,'$15.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fruit-Loom-Spaghetti-Heather-Charcoal/dp/B0BTB663JT/ref=sr_1_86?keywords=women%27s+clothing&qid=1703020392&sr=8-86',47,'2023-12-19 15:13:13.894848-06','2023-12-19 15:13:13.894848-06','www.amazon.com'),
+ (3730,'BTFBM',NULL,'B08CL2KGGV','https://m.media-amazon.com/images/I/71EmSxCBAcL._AC_UL320_.jpg',4916,4.1,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BTFBM-Slouchy-Blouses-Lightweight-Pullover/dp/B08CL2KGGV/ref=sr_1_87?keywords=women%27s+clothing&qid=1703020392&sr=8-87',47,'2023-12-19 15:13:13.903549-06','2023-12-19 15:13:13.903549-06','www.amazon.com'),
+ (3731,'Amazon Essentials',NULL,'B097RRK44H','https://m.media-amazon.com/images/I/91H7QtkhtKL._AC_UL320_.jpg',8674,4.2,'$10.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Relaxed-Fit-Short-Sleeve-XX-Large/dp/B097RRK44H/ref=sr_1_88?keywords=women%27s+clothing&qid=1703020392&sr=8-88',47,'2023-12-19 15:13:13.911523-06','2023-12-19 15:13:13.911523-06','www.amazon.com'),
+ (3732,'Dokotoo',NULL,'B0C9DJRRC7','https://m.media-amazon.com/images/I/81BqZfPoLhL._AC_UL320_.jpg',324,4.3,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dokotoo-Shacket-Oversized-Pocketed-Outerwear/dp/B0C9DJRRC7/ref=sr_1_89?keywords=women%27s+clothing&qid=1703020392&sr=8-89',47,'2023-12-19 15:13:13.918742-06','2023-12-19 15:13:13.918742-06','www.amazon.com'),
+ (3733,'Amazon Essentials',NULL,'B08XCC2DC2','https://m.media-amazon.com/images/I/81EkMQiiG+L._MCnd_AC_UL320_.jpg',16419,4.5,'$14.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Full-Zip-Buffalo-X-Large/dp/B08XCC2DC2/ref=sr_1_90?keywords=women%27s+clothing&qid=1703020392&sr=8-90',47,'2023-12-19 15:13:13.926861-06','2023-12-19 15:13:13.926861-06','www.amazon.com'),
+ (3734,'SimpleFun',NULL,'B0CBQJPYFC','https://m.media-amazon.com/images/I/81a5rmLIRDL._AC_UL320_.jpg',63,4.4,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SimpleFun-Sweaters-Square-Sleeve-Clothing/dp/B0CBQJPYFC/ref=sr_1_91?keywords=women%27s+clothing&qid=1703020392&sr=8-91',47,'2023-12-19 15:13:13.934461-06','2023-12-19 15:13:13.934461-06','www.amazon.com'),
+ (3735,'Dimur',NULL,'B0CBP663HN','https://m.media-amazon.com/images/I/8112lWIa8tL._AC_UL320_.jpg',169,4.2,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dimur-Dressy-Sweaters-Fashion-Apricot/dp/B0CBP663HN/ref=sr_1_92?keywords=women%27s+clothing&qid=1703020392&sr=8-92',47,'2023-12-19 15:13:13.942278-06','2023-12-19 15:13:13.942278-06','www.amazon.com'),
+ (3736,'OQQ',NULL,'B0C8J2QCQV','https://m.media-amazon.com/images/I/81KR9xBxJeL._AC_UL320_.jpg',269,4.2,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OQQ-Leggings-Seamless-Athletic-Exercise/dp/B0C8J2QCQV/ref=sr_1_93?keywords=women%27s+clothing&qid=1703020392&sr=8-93',47,'2023-12-19 15:13:13.949827-06','2023-12-19 15:13:13.949827-06','www.amazon.com'),
+ (3737,'Amazon Essentials',NULL,'B08CJ3QK6N','https://m.media-amazon.com/images/I/91anSLv1BGL._AC_UL320_.jpg',50719,4.5,'$17.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Full-Zip-Burgundy-Heather/dp/B08CJ3QK6N/ref=sr_1_94?keywords=women%27s+clothing&qid=1703020392&sr=8-94',47,'2023-12-19 15:13:13.957718-06','2023-12-19 15:13:13.957718-06','www.amazon.com'),
+ (3738,'BALEAF',NULL,'B08JYCDHK8','https://m.media-amazon.com/images/I/61rBrCB-jTL._AC_UL320_.jpg',9476,4.5,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BALEAF-Resistant-Legging-Waisted-Thermal/dp/B08JYCDHK8/ref=sr_1_95?keywords=women%27s+clothing&qid=1703020392&sr=8-95',47,'2023-12-19 15:13:13.964307-06','2023-12-19 15:13:13.964307-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3739,'ANRABESS',NULL,'B09H42JVYP','https://m.media-amazon.com/images/I/612gMNDkbcL._AC_UL320_.jpg',4892,4.2,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ANRABESS-Crewneck-Oversize-Maternity-412baixing-L/dp/B09H42JVYP/ref=sr_1_96?keywords=women%27s+clothing&qid=1703020392&sr=8-96',47,'2023-12-19 15:13:13.975996-06','2023-12-19 15:13:13.975996-06','www.amazon.com'),
+ (3740,'Trendy Queen',NULL,'B0BMKQSM2N','https://m.media-amazon.com/images/I/618toxLwQtL._AC_UL320_.jpg',322,4.2,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Oversized-Sweatshirts-Lightweight/dp/B0BMKQSM2N/ref=sr_1_97?keywords=women%27s+clothing&qid=1703020392&sr=8-97',47,'2023-12-19 15:13:13.983586-06','2023-12-19 15:13:13.983586-06','www.amazon.com'),
+ (3741,'AUROLA',NULL,'B0B12LP1XW','https://m.media-amazon.com/images/I/411WWHX5cAL._AC_UL320_.jpg',14686,4.3,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Seamless-Scrunch-Legging-Legging-25%EF%BC%88S-Chestnut/dp/B0B12LP1XW/ref=sr_1_98?keywords=women%27s+clothing&qid=1703020392&sr=8-98',47,'2023-12-19 15:13:13.990755-06','2023-12-19 15:13:13.990755-06','www.amazon.com'),
+ (3742,'Signature by Levi Strauss & Co. Gold Label',NULL,'B07QKP39P9','https://m.media-amazon.com/images/I/61Uav7ZbUdL._AC_UL320_.jpg',23561,4.4,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Signature-Levi-Strauss-Totally-Shaping/dp/B07QKP39P9/ref=sr_1_99?keywords=women%27s+clothing&qid=1703020392&sr=8-99',47,'2023-12-19 15:13:13.998854-06','2023-12-19 15:13:13.998854-06','www.amazon.com'),
+ (3743,'EVALESS',NULL,'B0C7WMPJWW','https://m.media-amazon.com/images/I/71X76vwqDcL._AC_UL320_.jpg',368,4.1,'$36.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/EVALESS-Sweaters-Shoulder-Oversized-Pullover/dp/B0C7WMPJWW/ref=sr_1_100?keywords=women%27s+clothing&qid=1703020392&sr=8-100',47,'2023-12-19 15:13:14.007007-06','2023-12-19 15:13:14.007007-06','www.amazon.com'),
+ (3744,'ANRABESS',NULL,'B0C3QS2K65','https://m.media-amazon.com/images/I/51RqYmL9tML._AC_UL320_.jpg',1035,4.2,'$55.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ANRABESS-Sweatsuit-Oversized-Sweatshirt-1088heise-M/dp/B0C3QS2K65/ref=sr_1_101?keywords=women%27s+clothing&qid=1703020392&sr=8-101',47,'2023-12-19 15:13:14.015086-06','2023-12-19 15:13:14.015086-06','www.amazon.com'),
+ (3745,'AUTOMET',NULL,'B0BJ1FX58G','https://m.media-amazon.com/images/I/61-x8RRmL9L._AC_UL320_.jpg',156,3.9,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AUTOMET-Cropped-Lightweight-Sleeveless-Outerwear/dp/B0BJ1FX58G/ref=sr_1_102?keywords=women%27s+clothing&qid=1703020392&sr=8-102',47,'2023-12-19 15:13:14.023468-06','2023-12-19 15:13:14.023468-06','www.amazon.com'),
+ (3746,'SOLY HUX',NULL,'B08RD3RWDD','https://m.media-amazon.com/images/I/61C55c4m+-L._AC_UL320_.jpg',1779,4.4,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SOLY-HUX-Cartoon-Lettuce-Sleepwear/dp/B08RD3RWDD/ref=sr_1_103?keywords=women%27s+clothing&qid=1703020392&sr=8-103',47,'2023-12-19 15:13:14.030822-06','2023-12-19 15:13:14.030822-06','www.amazon.com'),
+ (3747,'Trendy Queen',NULL,'B0BW8ZCGFQ','https://m.media-amazon.com/images/I/61RcVUDHeYL._AC_UL320_.jpg',640,4.2,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Fashion-Crewneck-Clothing/dp/B0BW8ZCGFQ/ref=sr_1_104?keywords=women%27s+clothing&qid=1703020392&sr=8-104',47,'2023-12-19 15:13:14.037846-06','2023-12-19 15:13:14.037846-06','www.amazon.com'),
+ (3748,'adidas',NULL,'B08M6HZ5R9','https://m.media-amazon.com/images/I/51SBv8O8JGL._MCnd_AC_UL320_.jpg',2910,4.5,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Adidas-Womens-Essentials-Warm-Up-3-Stripes/dp/B08M6HZ5R9/ref=sr_1_105?keywords=women%27s+clothing&qid=1703020392&sr=8-105',47,'2023-12-19 15:13:14.044017-06','2023-12-19 15:13:14.044017-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3749,'Trendy Queen',NULL,'B0C8SZT66V','https://m.media-amazon.com/images/I/61IWp0oC9zL._AC_UL320_.jpg',433,4.3,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Trendy-Queen-Sweatshirts-Oversized-Sweaters/dp/B0C8SZT66V/ref=sr_1_106?keywords=women%27s+clothing&qid=1703020392&sr=8-106',47,'2023-12-19 15:13:14.051428-06','2023-12-19 15:13:14.051428-06','www.amazon.com'),
+ (3750,'Hanes',NULL,'B0BVMXNYKB','https://m.media-amazon.com/images/I/71d94DxEudL._AC_UL320_.jpg',129,3.8,'$9.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Originals-V-Neck-T-Shirt-V-Neckline/dp/B0BVMXNYKB/ref=sr_1_107?keywords=women%27s+clothing&qid=1703020392&sr=8-107',47,'2023-12-19 15:13:14.05811-06','2023-12-19 15:13:14.05811-06','www.amazon.com'),
+ (3751,'Real Essentials',NULL,'B0CJHNWF4M','https://m.media-amazon.com/images/I/91D9ZmDzKSL._AC_UL320_.jpg',38,4.1,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/4-Pack-Athletic-Clothing-Activewear-Exercise/dp/B0CJHNWF4M/ref=sr_1_108?keywords=women%27s+clothing&qid=1703020392&sr=8-108',47,'2023-12-19 15:13:14.065563-06','2023-12-19 15:13:14.065563-06','www.amazon.com'),
+ (4569,'Large Makeup Mirror with Round 10X Magnifying Mirror for Travel, 3 Color Lighting, Rechargeable 2000mAh Batteries, Portable Ultra Slim Vanity Mirror for Women',NULL,'B0C1FZLKZ8','https://m.media-amazon.com/images/I/51bQ9JmsfNL._AC_UL320_.jpg',581,4.3,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfbXRmOjMwMDA0OTE3NzI2OTAwMjo6MDo6&url=%2FMagnifying-Lighting-Rechargeable-Batteries-Essential%2Fdp%2FB0C1FZLKZ8%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:07.964388-06','2023-12-19 15:18:07.964388-06','www.amazon.com'),
+ (3753,'Real Essentials',NULL,'B0C24ZPVVV','https://m.media-amazon.com/images/I/71mgsyPM6VL._AC_UL320_.jpg',175,4.3,'$44.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzQ3MzE3MjYxNzU3NzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNzEwNzg2NDI5OTg6OjA6Og&url=%2FPack-Leggings-Clothing-Compression-Exercise%2Fdp%2FB0C24ZPVVV%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0C24ZPVVV%26pd_rd_r%3Deed870d0-d99b-45e2-9917-d491a40cd66d%26pd_rd_w%3DlR2J2%26pd_rd_wg%3DPN6I9%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:14.08135-06','2023-12-19 15:13:14.08135-06','www.amazon.com'),
+ (3754,'THE GYM PEOPLE',NULL,'B0BD6RKHRZ','https://m.media-amazon.com/images/I/71THYRRxv5L._AC_UL320_.jpg',1029,4.5,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzQ3MzE3MjYxNzU3NzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwOTM2OTU4Nzk1OTg6OjE6Og&url=%2FWomens-Pullover-Sweatshirt-Fleece-Pockets%2Fdp%2FB0BD6RKHRZ%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0BD6RKHRZ%26pd_rd_r%3Deed870d0-d99b-45e2-9917-d491a40cd66d%26pd_rd_w%3DlR2J2%26pd_rd_wg%3DPN6I9%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-50-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:14.088925-06','2023-12-19 15:13:14.088925-06','www.amazon.com'),
+ (3755,'NOOYME',NULL,'B0B5F1S3FZ','https://m.media-amazon.com/images/I/6188-J6MGgL._AC_UL320_.jpg',3463,4.4,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzQ3MzE3MjYxNzU3NzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwOTEwMzIxODg1OTg6OjI6Og&url=%2FNOOYME-Thermal-Underwear-Weather-Black-camouflage%2Fdp%2FB0B5F1S3FZ%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0B5F1S3FZ%26pd_rd_r%3Deed870d0-d99b-45e2-9917-d491a40cd66d%26pd_rd_w%3DlR2J2%26pd_rd_wg%3DPN6I9%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:14.097132-06','2023-12-19 15:13:14.097132-06','www.amazon.com'),
+ (3756,'ANRABESS',NULL,'B0C69GXHBC','https://m.media-amazon.com/images/I/61jxmL7ny9L._MCnd_AC_UL320_.jpg',443,4.2,'$26.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzQ3MzE3MjYxNzU3NzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwOTg5NDY3MjU1MDI6OjM6Og&url=%2FANRABESS-Athletic-Exercise-Everyday-1125qianka-S%2Fdp%2FB0C69GXHBC%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB0C69GXHBC%26pd_rd_r%3Deed870d0-d99b-45e2-9917-d491a40cd66d%26pd_rd_w%3DlR2J2%26pd_rd_wg%3DPN6I9%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:14.105108-06','2023-12-19 15:13:14.105108-06','www.amazon.com'),
+ (4053,'New Balance',NULL,'B09XRGRSS6','https://m.media-amazon.com/images/I/81hXfSf1eWL._AC_UL320_.jpg',2491,4.4,'$49.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/New-Balance-Fresh-Arishi-Running/dp/B09XRGRSS6/ref=sr_1_43?keywords=men%27s+shoes&qid=1703020483&sr=8-43',53,'2023-12-19 15:14:45.027807-06','2023-12-19 15:14:45.027807-06','www.amazon.com'),
+ (3752,'Natural Feelings',NULL,'B07X6L22HH','https://m.media-amazon.com/images/I/71BSA4GtsAL._AC_UL320_.jpg',11692,4.4,'$33.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzQ3MzE3MjYxNzU3NzE3OjE3MDMwMjAzOTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwOTY4MDY3NTQ5OTg6OjQ6Og&url=%2FNatural-Feelings-Waisted-Leggings-Athletic%2Fdp%2FB07X6L22HH%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bclothing%26keywords%3Dwomen%2527s%2Bclothing%26pd_rd_i%3DB07X6L22HH%26pd_rd_r%3Deed870d0-d99b-45e2-9917-d491a40cd66d%26pd_rd_w%3DlR2J2%26pd_rd_wg%3DPN6I9%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D16TG4SMFWXF632KBRZJ9%26qid%3D1703020392%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',47,'2023-12-19 15:13:14.073704-06','2023-12-19 15:13:14.111881-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3757,'Caseative Water Ripple Pattern Curly Wave Frame Soft Compatible with iPhone Case (White,iPhone 12)',NULL,'B0BPWYTYH4','https://m.media-amazon.com/images/I/71HpnsBJJAL._AC_UY218_.jpg',948,4.4,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NDY5NDc4MDk0NTMzNzE3OjE3MDMwMjA0MDA6c3BfYXRmOjIwMDEzMzA1MjQ5OTM5ODo6MDo6&url=%2FCaseative-Ripple-Pattern-Compatible-iPhone%2Fdp%2FB0BPWYTYH4%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020400%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',48,'2023-12-19 15:13:21.554027-06','2023-12-19 15:13:21.554027-06','www.amazon.com'),
+ (3758,'Gyizho fits iPhone 15 Phone Case [Compatible with MagSafe] [10FT Drop Resistant] Non-Yellowing Cover for iPhone 15 Magnetic Case (Clear)',NULL,'B0CCS6SN17','https://m.media-amazon.com/images/I/71BwGW4VwSL._AC_UY218_.jpg',623,4.5,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NDY5NDc4MDk0NTMzNzE3OjE3MDMwMjA0MDA6c3BfYXRmOjMwMDA3NjE4NzkyMjYwMjo6MDo6&url=%2FGyizho-iPhone-15-Compatible-Non-Yellowing%2Fdp%2FB0CCS6SN17%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020400%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',48,'2023-12-19 15:13:21.560916-06','2023-12-19 15:13:21.560916-06','www.amazon.com'),
+ (3759,'elago Liquid Silicone Case Compatible with iPhone 13 Pro Case (6.1"), Premium Silicone, Full Body Protection - 3 Layer Shockproof Phone Cover, Anti-Scratch Soft Microfiber Lining (Stone)',NULL,'B09D2Z7HX4','https://m.media-amazon.com/images/I/51crrpCJ16L._AC_UY218_.jpg',10086,4.4,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/elago-Compatible-Protective-Shockproof-Anti-Scratch/dp/B09D2Z7HX4/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-3',48,'2023-12-19 15:13:21.568002-06','2023-12-19 15:13:21.568002-06','www.amazon.com'),
+ (3760,'Sayoaho Designed for iPhone 14 Pro Max Phone Case, Soft PU Leather TPU and Cute Art Wavy Painted for Women Girls, Slim Protective Shockproof Compatible with iPhone Case (Beige, iPhone 14 Pro Max)',NULL,'B0CHS7SPN3','https://m.media-amazon.com/images/I/71UQvBiGwDL._AC_UY218_.jpg',120,4.5,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sayoaho-Designed-Protective-Shockproof-Compatible/dp/B0CHS7SPN3/ref=cs_sr_dp_4?keywords=iphone+cases&qid=1703020400&sr=8-5',48,'2023-12-19 15:13:21.575841-06','2023-12-19 15:13:21.575841-06','www.amazon.com'),
+ (4570,'Universal Travel Adapter,International Plug Adapter with Dual USB Charging (2 USB C Port & 2 USB A Ports), Worldwide Power Adaptor Travel Essentials Charger for Europe EU UK AUS(Type G/C/I/A)',NULL,'B0CM2XV78Y','https://m.media-amazon.com/images/I/61o0Gm+RC9L._AC_UL320_.jpg',2,5.0,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfbXRmOjMwMDEwMjc1MDA3NjQwMjo6MDo6&url=%2FUniversal-International-Charging-Worldwide-Essentials%2Fdp%2FB0CM2XV78Y%2Fref%3Dsr_1_69_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-69-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:07.97052-06','2023-12-19 15:18:07.97052-06','www.amazon.com'),
+ (3762,'EWA for iPhone 15 Phone Case [Compatible with Magsafe] with Ring Stand, Silicone Strap Grip, Dual Magnet Backsnap, Rugged Drop Protection 2023 (Black)',NULL,'B0CD3M14G7','https://m.media-amazon.com/images/I/71YviXg62mL._AC_UL320_.jpg',418,4.2,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMDM2MTYzNzI1ODgwNzE3OjE3MDMwMjA0MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA2NjA3ODY3ODAwMjo6MDo6&url=%2FEWA-Compatible-Silicone-Backsnap-Protection%2Fdp%2FB0CD3M14G7%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Diphone%2Bcases%26keywords%3Diphone%2Bcases%26pd_rd_i%3DB0CD3M14G7%26pd_rd_r%3De992da54-6e9c-4686-acdd-1b511cf9780f%26pd_rd_w%3D6v6gK%26pd_rd_wg%3DhpLM1%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DB0TWQZWWBHGKAEAPVJ7Q%26qid%3D1703020400%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',48,'2023-12-19 15:13:21.590264-06','2023-12-19 15:13:21.590264-06','www.amazon.com'),
+ (3975,'LENRUE G11 Computer Speakers for Desktop, Touch Lights PC Speakers with Surge Clear Sound, USB C/USB Powered for Computer Desktop PC Laptop Monitor',NULL,'B0BRFN13S9','https://m.media-amazon.com/images/I/715MdMHfsJL._AC_UY218_.jpg',766,4.3,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LENRUE-Computer-Speakers-Desktop-AUX_Black/dp/B0BRFN13S9/ref=sr_1_15?keywords=computer+accessories&qid=1703020467&sr=8-15',52,'2023-12-19 15:14:28.353204-06','2023-12-19 15:14:28.353204-06','www.amazon.com'),
+ (3763,'Diary iPhone Case [iPhone 15, Etoupe] BODT15-ET',NULL,'B0CJ25L1TC','https://m.media-amazon.com/images/I/61GR-Qz0atL._AC_UL320_.jpg',456,4.0,'$170.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMDM2MTYzNzI1ODgwNzE3OjE3MDMwMjA0MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA2NzQ2Mjc1NzQwMjo6MTo6&url=%2FDiary-iPhone-Case-Etoupe-BODT15%2Fdp%2FB0CJ25L1TC%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Diphone%2Bcases%26keywords%3Diphone%2Bcases%26pd_rd_i%3DB0CJ25L1TC%26pd_rd_r%3De992da54-6e9c-4686-acdd-1b511cf9780f%26pd_rd_w%3D6v6gK%26pd_rd_wg%3DhpLM1%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DB0TWQZWWBHGKAEAPVJ7Q%26qid%3D1703020400%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',48,'2023-12-19 15:13:21.597992-06','2023-12-19 15:13:21.597992-06','www.amazon.com'),
+ (3764,'Anuck iPhone 8 Plus Case, iPhone 7 Plus Case, Soft Silicone Gel Rubber Bumper Case Microfiber Lining Hard Shell Shockproof Full-Body Protective Case Cover for iPhone 7 Plus /8 Plus 5.5" - T Black',NULL,'B07K3TFC6X','https://m.media-amazon.com/images/I/61x-cbZZEdL._AC_UL320_.jpg',27175,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMDM2MTYzNzI1ODgwNzE3OjE3MDMwMjA0MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA3OTYxMjc0NjkwMjo6Mjo6&url=%2FAnuck-Microfiber-Shockproof-Full-Body-Protective%2Fdp%2FB07K3TFC6X%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Diphone%2Bcases%26keywords%3Diphone%2Bcases%26pd_rd_i%3DB07K3TFC6X%26pd_rd_r%3De992da54-6e9c-4686-acdd-1b511cf9780f%26pd_rd_w%3D6v6gK%26pd_rd_wg%3DhpLM1%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DB0TWQZWWBHGKAEAPVJ7Q%26qid%3D1703020400%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',48,'2023-12-19 15:13:21.606719-06','2023-12-19 15:13:21.606719-06','www.amazon.com'),
+ (3765,'NGB Compatible for iPhone 6 6S 7 8 Case, iPhone SE 3 2022/iPhone SE 2 2020 Case with Tempered Glass Screen Protector, Ring Holder, Girls Women Kids Liquid Glitter TPU Cute Case (Pink/Purple)',NULL,'B0973KLTMG','https://m.media-amazon.com/images/I/814R9Zhn2FL._AC_UL320_.jpg',2921,4.5,'$13.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMDM2MTYzNzI1ODgwNzE3OjE3MDMwMjA0MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA2Njg0MDQ5Nzk5ODo6Mzo6&url=%2FNGB-Compatible-Tempered-Protector-Quicksand%2Fdp%2FB0973KLTMG%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Diphone%2Bcases%26keywords%3Diphone%2Bcases%26pd_rd_i%3DB0973KLTMG%26pd_rd_r%3De992da54-6e9c-4686-acdd-1b511cf9780f%26pd_rd_w%3D6v6gK%26pd_rd_wg%3DhpLM1%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DB0TWQZWWBHGKAEAPVJ7Q%26qid%3D1703020400%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',48,'2023-12-19 15:13:21.614497-06','2023-12-19 15:13:21.614497-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3761,'KUMTZO Designed for iPhone 15 Black Leopard Case, Heavy Duty Protection Shockproof Dropproof Case, Cute Black Leopard Cheetah Cover for Women Girls iPhone 15 6.1 inch',NULL,'B0CM8SD8K6','https://m.media-amazon.com/images/I/61nFMen6zwL._AC_UL320_.jpg',195,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMDM2MTYzNzI1ODgwNzE3OjE3MDMwMjA0MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5NzY5MzUxMDEwMjo6NDo6&url=%2FKUMTZO-Designed-Protection-Shockproof-Dropproof%2Fdp%2FB0CM8SD8K6%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Diphone%2Bcases%26keywords%3Diphone%2Bcases%26pd_rd_i%3DB0CM8SD8K6%26pd_rd_r%3De992da54-6e9c-4686-acdd-1b511cf9780f%26pd_rd_w%3D6v6gK%26pd_rd_wg%3DhpLM1%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DB0TWQZWWBHGKAEAPVJ7Q%26qid%3D1703020400%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',48,'2023-12-19 15:13:21.583285-06','2023-12-19 15:13:21.62171-06','www.amazon.com'),
+ (3766,'OtterBox IPhone SE 3rd & 2nd Gen, IPhone 8 & IPhone 7 (Not Compatible with Plus Sized Models) Commuter Series Case - BLACK, Slim & Tough, Pocket-friendly, with Port Protection',NULL,'B00Z7S48W6','https://m.media-amazon.com/images/I/41UhTjBRSXL._AC_UY218_.jpg',35995,4.6,'$22.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OtterBox-IPhone-Compatible-Models-Commuter/dp/B00Z7S48W6/ref=cs_sr_dp_2?keywords=iphone+cases&qid=1703020400&sr=8-6',48,'2023-12-19 15:13:21.629183-06','2023-12-19 15:13:21.629183-06','www.amazon.com'),
+ (3767,'JETech Silicone Case for iPhone 13 6.1-Inch, Silky-Soft Touch Full-Body Protective Phone Case, Shockproof Cover with Microfiber Lining (Black)',NULL,'B09BVHH3F6','https://m.media-amazon.com/images/I/51RdsD4WKbL._AC_UY218_.jpg',6410,4.5,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JETech-Compatible-Silky-Soft-Protective-Shockproof/dp/B09BVHH3F6/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-7',48,'2023-12-19 15:13:21.637194-06','2023-12-19 15:13:21.637194-06','www.amazon.com'),
+ (3768,'TAURI 5-in-1 Magnetic for iPhone 13 Case for iPhone 14 Case [Designed for Magsafe], with 2X Screen Protectors +2X Camera Lens Protectors, [Not-Yellowing] Phone Case, Clear',NULL,'B0BR9V7CCN','https://m.media-amazon.com/images/I/71qqcc5TKGL._AC_UY218_.jpg',27924,4.6,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TAURI-Magnetic-14-Protectors-Not-Yellowing/dp/B0BR9V7CCN/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-8',48,'2023-12-19 15:13:21.645286-06','2023-12-19 15:13:21.645286-06','www.amazon.com'),
+ (3769,'Diaclara Designed for iPhone 13 Case, Full Body Rugged Case with Built-in Touch Sensitive Anti-Scratch Screen Protector, Soft TPU Bumper Case for iPhone 13 6.1" (Crystal Pink)',NULL,'B09T5HCMTQ','https://m.media-amazon.com/images/I/71qY1lCtbqL._AC_UY218_.jpg',7583,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Diaclara-Designed-Sensitive-Anti-Scratch-Protector/dp/B09T5HCMTQ/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-9',48,'2023-12-19 15:13:21.65306-06','2023-12-19 15:13:21.65306-06','www.amazon.com'),
+ (3770,'ESR for iPhone 15 Pro Max Case, Compatible with MagSafe, Military-Grade Protection, Yellowing Resistant, Scratch-Resistant Back, Magnetic Phone Case for iPhone 15 Pro Max, Classic Series, Clear',NULL,'B0CC1F4V7Q','https://m.media-amazon.com/images/I/71D3d+Eq6cL._AC_UY218_.jpg',3108,4.7,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ESR-Compatible-Military-Grade-Protection-Scratch-Resistant/dp/B0CC1F4V7Q/ref=cs_sr_dp?keywords=iphone+cases&qid=1703020400&sr=8-10',48,'2023-12-19 15:13:21.659887-06','2023-12-19 15:13:21.659887-06','www.amazon.com'),
+ (3771,'ORNARTO Compatible with iPhone 13 Case 6.1, Slim Liquid Silicone 3 Layers Full Covered Soft Gel Rubber Case Cover 6.1 inch-Chalk Pink',NULL,'B09F3MNSTP','https://m.media-amazon.com/images/I/51H7ButiKrL._AC_UY218_.jpg',15347,4.5,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ORNARTO-Compatible-Silicone-Covered-inch-Chalk/dp/B09F3MNSTP/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-11',48,'2023-12-19 15:13:21.66803-06','2023-12-19 15:13:21.66803-06','www.amazon.com'),
+ (3772,'CASETiFY Impact iPhone 14 Pro Case [4X Military Grade Drop Tested / 8.2ft Drop Protection/Compatible with Magsafe] - matt Darling Sticker Collage - Glossy Black',NULL,'B0B8S7J8W5','https://m.media-amazon.com/images/I/611qNt5978L._AC_UY218_.jpg',263,4.5,'$65.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NDY5NDc4MDk0NTMzNzE3OjE3MDMwMjA0MDA6c3BfbXRmOjMwMDA4NDA2MDkxNTcwMjo6MDo6&url=%2FCASETiFY-Impact-MagSafe-Compatible-iPhone%2Fdp%2FB0B8S7J8W5%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020400%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',48,'2023-12-19 15:13:21.675003-06','2023-12-19 15:13:21.675003-06','www.amazon.com'),
+ (4571,'SAUNORCH Travel Adapter Worldwide, Universal International Power Plug Adapter W/2.4A 3xUSB-A and 3.0A Type-C Wall Charger, European Travel Plug Adapter for Europe UK EU US CA AU Italy Asia-Blue',NULL,'B07D81J56M','https://m.media-amazon.com/images/I/61ZpCo3bieL._AC_UL320_.jpg',3503,4.6,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTk3Mjk0NjM0MzQ4NzE3OjE3MDMwMjA2ODY6c3BfbXRmOjIwMDEwNTk3NDUwNjQ5ODo6MDo6&url=%2FSAUNORCH-Universal-International-Worldwide-Asia-Blue%2Fdp%2FB07D81J56M%2Fref%3Dsr_1_70_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020686%26sr%3D8-70-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:07.976138-06','2023-12-19 15:18:07.976138-06','www.amazon.com'),
+ (3774,'Mkeke for iPhone 15 Case Clear, [Not Yellowing] [Military Grade Protection] Slim Shockproof Phone Cases for iPhone 15 2023',NULL,'B0CBRW995T','https://m.media-amazon.com/images/I/71KRqvrHdML._AC_UY218_.jpg',42363,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mkeke-Yellowing-Military-Protection-Shockproof/dp/B0CBRW995T/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-13',48,'2023-12-19 15:13:21.690939-06','2023-12-19 15:13:21.690939-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3775,'elago Compatible with iPhone 13 Pro Max Case, Liquid Silicone Case, Full Body Screen Camera Protective Cover, Shockproof, Slim Phone Case, Anti-Scratch Soft Microfiber Lining, 6.7 inch (Stone)',NULL,'B09D339LSQ','https://m.media-amazon.com/images/I/61699w-K68L._AC_UY218_.jpg',14846,4.5,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/elago-Compatible-Protective-Shockproof-Anti-Scratch/dp/B09D339LSQ/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-14',48,'2023-12-19 15:13:21.69895-06','2023-12-19 15:13:21.69895-06','www.amazon.com'),
+ (3776,'Cordking Designed for iPhone 12 Case, Designed for iPhone 12 Pro Case, Silicone Shockproof Phone Case with [Soft Anti-Scratch Microfiber Lining] 6.1 inch, Midnight Green',NULL,'B08CXZ3342','https://m.media-amazon.com/images/I/61oWnf6oO7L._AC_UY218_.jpg',38238,4.5,'$9.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cordking-Designed-Shockproof-Anti-Scratch-Microfiber/dp/B08CXZ3342/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-15',48,'2023-12-19 15:13:21.707258-06','2023-12-19 15:13:21.707258-06','www.amazon.com'),
+ (3821,'Dahkoiz for Samsung Galaxy S23 Case, with Dust-Proof Port Cover, Full Body Protection Rubber Cover Phone Case for Samsung Galaxy S23 5G 6.1-Inch, Black/Black',NULL,'B0BLYF6RST','https://m.media-amazon.com/images/I/71meGT7puqL._AC_UY218_.jpg',234,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dahkoiz-Galaxy-S23-Case-Black/dp/B0BLYF6RST/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-15',49,'2023-12-19 15:13:38.369037-06','2023-12-19 15:13:38.369037-06','www.amazon.com'),
+ (3777,'GVIEWIN Designed for iPhone 13 Case 6.1 Inch, with Tempered Glass Screen Protector + Camera Lens Protector Clear Flower Soft & Flexible Shockproof Floral Women Phone Cover(Magnolia/White)',NULL,'B09CH43LPY','https://m.media-amazon.com/images/I/71yaSPrkZwL._AC_UY218_.jpg',8031,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GVIEWIN-Designed-Shockproof-Protective-Case%EF%BC%88Magnolia/dp/B09CH43LPY/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-16',48,'2023-12-19 15:13:21.714288-06','2023-12-19 15:13:21.714288-06','www.amazon.com'),
+ (3778,'Idocolors Cute Funny Face Phone Case for iPhone 12/12 Pro,White Liquid Silicone Girly Cases,Cartoon Soft Gel Rubber Full-Body Protective Microfiber Lining Shockproof Coffee Cover',NULL,'B09SPJK229','https://m.media-amazon.com/images/I/61+2kA-lgUL._AC_UY218_.jpg',692,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Idocolors-Full-Body-Protective-Microfiber-Shockproof/dp/B09SPJK229/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-18',48,'2023-12-19 15:13:21.722384-06','2023-12-19 15:13:21.722384-06','www.amazon.com'),
+ (3779,'OtterBox IPhone 11 Commuter Series Case - BESPOKE WAY (BLAZER BLUE/STORMY SEAS BLUE), Slim & Tough, Pocket-Friendly, with Port Protection',NULL,'B07W3Q2HLX','https://m.media-amazon.com/images/I/514Ds6hlcYL._AC_UY218_.jpg',47380,4.7,'$27.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/IPhone-OtterBox-Commuter-Pocket-Friendly-Protection/dp/B07W3Q2HLX/ref=cs_sr_dp_4?keywords=iphone+cases&qid=1703020400&sr=8-19',48,'2023-12-19 15:13:21.729683-06','2023-12-19 15:13:21.729683-06','www.amazon.com'),
+ (3780,'JETech Case for iPhone 15 6.1-Inch, Non-Yellowing Shockproof Phone Bumper Cover, Anti-Scratch Clear Back (Clear)',NULL,'B0CCCZ7MM9','https://m.media-amazon.com/images/I/71JVfFHOi7L._AC_UY218_.jpg',763,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JETech-6-1-Inch-Non-Yellowing-Shockproof-Anti-Scratch/dp/B0CCCZ7MM9/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020400&sr=8-20',48,'2023-12-19 15:13:21.738863-06','2023-12-19 15:13:21.738863-06','www.amazon.com'),
+ (3781,'CASETiFY Ultra Impact iPhone 14 Pro Case [5X Military Grade Drop Tested / 11.5ft Drop Protection/Compatible with Magsafe] - Fun Friends by Jon Burgerman - Glossy Black',NULL,'B0B8SFJCVL','https://m.media-amazon.com/images/I/61wjdoHtkLL._AC_UY218_.jpg',118,4.5,'$73.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NDY5NDc4MDk0NTMzNzE3OjE3MDMwMjA0MDA6c3BfYnRmOjMwMDA4NDA2MDg5NzgwMjo6MDo6&url=%2FCASETiFY-Impact-Protective-MagSafe-Compatible%2Fdp%2FB0B8SFJCVL%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020400%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',48,'2023-12-19 15:13:21.745993-06','2023-12-19 15:13:21.745993-06','www.amazon.com'),
+ (3782,'Casely iPhone 13 Pro Max Case | Wild West Adventure | Desert Western | Compatible with MagSafe',NULL,'B09RQBL824','https://m.media-amazon.com/images/I/81n7rgkAaLL._AC_UY218_.jpg',716,4.7,'$30.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1NDY5NDc4MDk0NTMzNzE3OjE3MDMwMjA0MDA6c3BfYnRmOjIwMDEzMTIyNDg5MzA5ODo6MDo6&url=%2FCasely-iPhone-Adventure-Compatible-MagSafe%2Fdp%2FB09RQBL824%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020400%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1%26smid%3DA2EEZJUJM5N8DK',48,'2023-12-19 15:13:21.753689-06','2023-12-19 15:13:21.753689-06','www.amazon.com'),
+ (3773,'Velvet Caviar Designed for iPhone 13 Case for Women [10ft Drop Tested] Compatible with MagSafe - Cute Magnetic Phone Cover - Protective Microfiber Lining (Holographic Blue Marble)',NULL,'B09H3LXV35','https://aax-us-iad.amazon.com/e/loi/imp?b=JN-pnMARyjp9AYbv0gh3QCUAAAGMg-0QJgEAAAH2AQBvbm9fdHhuX2JpZDQgICBvbm9fdHhuX2ltcDEgICCT2nZW',866,4.6,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RMYNNyE23g54w8f-tbVLSakAAAGMg-0P3wEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICDwBlGT/https://www.amazon.com/Velvet-Caviar-Designed-Compatible-MagSafe/dp/B09H3LXV35/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=iphone+cases&keywords=iphone+cases&pd_rd_i=B09H3LXV35&pd_rd_r=e992da54-6e9c-4686-acdd-1b511cf9780f&pd_rd_w=b85cF&pd_rd_wg=hpLM1&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=B0TWQZWWBHGKAEAPVJ7Q&qid=1703020400&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',48,'2023-12-19 15:13:21.681995-06','2023-12-19 15:13:21.761097-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3783,'Anuck for iPhone 12 Case Wavy Edge Water Ripple Pattern Design, Cute Wave Curly Frame Shape Soft Flexible TPU Shockproof Full-Body Protective Phone Case Cover for Women Girls, Shiny Silver',NULL,'B0CKYJ1D4J','https://m.media-amazon.com/images/I/61KUYm4R3kL._AC_UY218_.jpg',23,4.7,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNzkxMjMwNjE0MTE3MTc6MTcwMzAyMDQwODpzcF9hdGZfbmV4dDozMDAxMDM4MjgyNjY0MDI6OjA6Og&url=%2FAnuck-iPhone-12-Shockproof-Protective%2Fdp%2FB0CKYJ1D4J%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020408%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',48,'2023-12-19 15:13:29.28116-06','2023-12-19 15:13:29.28116-06','www.amazon.com'),
+ (4054,'Reebok',NULL,'B08LFWBDQS','https://m.media-amazon.com/images/I/71NB9Z-bTUL._AC_UL320_.jpg',283,4.3,'$29.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reebok-Flexagon-Force-Cross-Trainer/dp/B08LFWBDQS/ref=sr_1_45?keywords=men%27s+shoes&qid=1703020483&sr=8-45',53,'2023-12-19 15:14:45.040312-06','2023-12-19 15:14:45.040312-06','www.amazon.com'),
+ (3784,'Jonwelsy Case for iPhone 15, 360 Degree Front and Back Clear Tempered Glass Full Protection Magnetic Adsorption Metal Bumper Frame with Safety Lock Flip Cover for iPhone 15 6.1" (Silver)',NULL,'B0CJ7RQ3XS','https://m.media-amazon.com/images/I/71DhVR237vL._AC_UY218_.jpg',1,5.0,'$22.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNzkxMjMwNjE0MTE3MTc6MTcwMzAyMDQwODpzcF9hdGZfbmV4dDozMDAwODIzMDg0ODQwMDI6OjA6Og&url=%2FJonwelsy-Tempered-Protection-Magnetic-Adsorption%2Fdp%2FB0CJ7RQ3XS%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020408%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',48,'2023-12-19 15:13:29.300913-06','2023-12-19 15:13:29.300913-06','www.amazon.com'),
+ (3785,'ESR for iPhone 14 Case/iPhone 13 Case, Military-Grade Protection, Shockproof Air-Guard Corners, Yellowing-Resistant Acrylic Back, Phone Case for iPhone 14/iPhone 13, Air Armor Case, Clear',NULL,'B099NK6QVY','https://m.media-amazon.com/images/I/71F5gFxzTBL._AC_UY218_.jpg',18867,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ESR-Compatible-Military-Grade-Shock-Absorbing-Yellowing-Resistant/dp/B099NK6QVY/ref=cs_sr_dp_6?keywords=iphone+cases&qid=1703020408&sr=8-19',48,'2023-12-19 15:13:29.308107-06','2023-12-19 15:13:29.308107-06','www.amazon.com'),
+ (3786,'Nvollnoe for iPhone 13 Case with Card Holder Heavy Duty Protective Dual Layer Shockproof Hidden Card Slot Slim Wallet Case for iPhone 13 for Women&Men(Rose Gold)',NULL,'B09YH4W1D8','https://m.media-amazon.com/images/I/719TAjBGgNL._AC_UY218_.jpg',2695,4.2,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nvollnoe-iPhone-Holder-Protective-Shockproof/dp/B09YH4W1D8/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-22',48,'2023-12-19 15:13:29.3144-06','2023-12-19 15:13:29.3144-06','www.amazon.com'),
+ (3787,'Pelican Ranger Series - iPhone 15 Plus Case 6.7" [Compatible with MagSafe] [Anti-Yellow] Magnetic Phone Case with Anti-Scratch Tech [12ft MIL-Grade Drop Protection] Cover for 15 Plus - Clear',NULL,'B0CC3W21TD','https://m.media-amazon.com/images/I/61sVSjOQM5L._AC_UY218_.jpg',6,5.0,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pelican-Ranger-Compatible-Anti-Yellow-Anti-Scratch/dp/B0CC3W21TD/ref=cs_sr_dp_2?keywords=iphone+cases&qid=1703020408&sr=8-23',48,'2023-12-19 15:13:29.321642-06','2023-12-19 15:13:29.321642-06','www.amazon.com'),
+ (3788,'GONEZ for iPhone 15 Case, Liquid Silicone Case [with 2 Screen Protectors + 2 Camera Lens Proctetors], Anti-Scratch Soft Microfiber Lining Shockproof Full Body Protective Phone Cover 6.1", Pastel Pink',NULL,'B0CC5BH45J','https://m.media-amazon.com/images/I/61i36P31rBL._AC_UY218_.jpg',172,4.5,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GONEZ-Protectors-Proctetors-Anti-Scratch-Microfiber/dp/B0CC5BH45J/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-24',48,'2023-12-19 15:13:29.32847-06','2023-12-19 15:13:29.32847-06','www.amazon.com'),
+ (3789,'JETech Case for iPhone 15 Pro Max 6.7-Inch, Shockproof Phone Bumper Cover, Solid Color Matte TPU Frame, Anti-Scratch Clear Back (Natural Titanium)',NULL,'B0CKTJLLB3','https://m.media-amazon.com/images/I/71v+hk94GKL._AC_UY218_.jpg',10,4.2,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JETech-6-7-Inch-Shockproof-Anti-Scratch-Titanium/dp/B0CKTJLLB3/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-25',48,'2023-12-19 15:13:29.333994-06','2023-12-19 15:13:29.333994-06','www.amazon.com'),
+ (3790,'BaHaHoues for iPhone 13 Case iPhone 14 Case with Slide Camera Cover iPhone 14 Phone Case with Magnetic Kickstand Ring, Military Grade Shockproof Protective Case for iPhone 14 & iPhone 13 (Red)',NULL,'B0C7KTHKRJ','https://m.media-amazon.com/images/I/81JyQ5w06rL._AC_UY218_.jpg',406,4.3,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BaHaHoues-Magnetic-Kickstand-Shockproof-Protective/dp/B0C7KTHKRJ/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-26',48,'2023-12-19 15:13:29.340087-06','2023-12-19 15:13:29.340087-06','www.amazon.com'),
+ (3791,'Myrauv for iPhone SE 2020/7/8 Love Heart Printed Case Girls Women Aesthetic Cute Shockproof Protective Case Soft TPU Hard Back Anti-Scratch Cover for iPhone SE 2020/7/8',NULL,'B0B68BSBMR','https://m.media-amazon.com/images/I/61OQpChtczL._AC_UY218_.jpg',13,3.4,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNzkxMjMwNjE0MTE3MTc6MTcwMzAyMDQwODpzcF9tdGY6MzAwMDUwNjc4Mzc2ODAyOjowOjo&url=%2FMyrauv-Aesthetic-Shockproof-Protective-Anti-Scratch%2Fdp%2FB0B68BSBMR%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Diphone%2Bcases%26qid%3D1703020408%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',48,'2023-12-19 15:13:29.346044-06','2023-12-19 15:13:29.346044-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3859,'OtterBox OnePlus Nord N200 5G Commuter Series Lite Case - BLACK, slim & tough, pocket-friendly, with open access to ports and speakers (no port covers),',NULL,'B094Q4DNW1','https://m.media-amazon.com/images/I/511epBw4bkS._AC_UY218_.jpg',1126,4.6,'$12.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OtterBox-Commuter-LITE-Case-OnePlus/dp/B094Q4DNW1/ref=sr_1_4?keywords=oneplus+cases&qid=1703020435&sr=8-4',50,'2023-12-19 15:13:56.556504-06','2023-12-19 15:13:56.556504-06','www.amazon.com'),
+ (3792,'BUYDOT Designed for iPhone 15 Case, Silicone Phone Case [Military Grade Drop Protection] [Anti-Scratch Microfiber Lining] Silicone Ultra Slim Cover Shockproof Phone Cases 6.1 inch, Black',NULL,'B0CFV5V5LS','https://m.media-amazon.com/images/I/61bVy4KXFZL._AC_UY218_.jpg',529,4.5,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BUYDOT-Protection-Anti-Scratch-Microfiber-Shockproof/dp/B0CFV5V5LS/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-29',48,'2023-12-19 15:13:29.353707-06','2023-12-19 15:13:29.353707-06','www.amazon.com'),
+ (3793,'TORRAS Strong Magnetic & Seamless Stand for iPhone 15 Pro Max Case, Fit for MagSafe, Mil-Grade Drop Protection, Adjustable Kickstand for iPhone 15 ProMax Case for Work/Video, Slim Diamond Clear',NULL,'B0CK2LHX5Y','https://m.media-amazon.com/images/I/71nvgnJjeyL._AC_UY218_.jpg',1028,4.6,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TORRAS-iPhone-15-Pro-Max/dp/B0CK2LHX5Y/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-30',48,'2023-12-19 15:13:29.360429-06','2023-12-19 15:13:29.360429-06','www.amazon.com'),
+ (3794,'OtterBox iPhone 13 Pro Max & iPhone 12 Pro Max Commuter Series Case - BLACK, slim & tough, pocket-friendly, with port protection',NULL,'B09D5V5PV2','https://m.media-amazon.com/images/I/61+zVoLJ9DL._AC_UY218_.jpg',8130,4.6,'$30.52','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/iPhone-OtterBox-Commuter-pocket-friendly-protection/dp/B09D5V5PV2/ref=cs_sr_dp_4?keywords=iphone+cases&qid=1703020408&sr=8-31',48,'2023-12-19 15:13:29.367649-06','2023-12-19 15:13:29.367649-06','www.amazon.com'),
+ (3795,'JETech Case for iPhone 13 6.1-Inch, Shockproof Phone Bumper Cover, Solid Color Matte TPU Frame, Anti-Scratch Clear Back (Pink)',NULL,'B0CKTJKRYT','https://m.media-amazon.com/images/I/61-kPnbxW+L._AC_UY218_.jpg',4,4.5,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JETech-iPhone-6-1-Inch-Shockproof-Anti-Scratch/dp/B0CKTJKRYT/ref=cs_sr_dp?keywords=iphone+cases&qid=1703020408&sr=8-32',48,'2023-12-19 15:13:29.374619-06','2023-12-19 15:13:29.374619-06','www.amazon.com'),
+ (3796,'FireNova Designed for iPhone 15 Pro Case, Silicone Upgraded [Camera Protection] Phone Case with [2 Screen Protectors], Soft Anti-Scratch Microfiber Lining Inside, 6.1 inch, Pink Pomelo',NULL,'B0CGXHVJYY','https://m.media-amazon.com/images/I/613Q02jbjZL._AC_UY218_.jpg',749,4.6,'$16.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FireNova-iPhone-15-Pro-Anti-Scratch/dp/B0CGXHVJYY/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-33',48,'2023-12-19 15:13:29.381904-06','2023-12-19 15:13:29.381904-06','www.amazon.com'),
+ (3797,'Caseative Water Ripple Pattern Curly Wave Frame Soft Compatible with iPhone Case (Silver,iPhone 12)',NULL,'B0BPWS653K','https://m.media-amazon.com/images/I/71fZxfAdrWL._AC_UY218_.jpg',948,4.4,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Caseative-Ripple-Pattern-Compatible-iPhone/dp/B0BPWS653K/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-34',48,'2023-12-19 15:13:29.388986-06','2023-12-19 15:13:29.388986-06','www.amazon.com'),
+ (3798,'ZIYE Magnetic Case for iPhone 14 Pro Max Case [Compatible with MagSafe] Camera Lens Protector Plating Luxury Cover for Women Men Clear Soft TPU Shockproof Protective Phone Case - Purple',NULL,'B0BLK3MKJV','https://m.media-amazon.com/images/I/61EpXFFOr1L._AC_UY218_.jpg',1086,4.3,'$17.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ZIYE-Compatible-Protector-Shockproof-Protective/dp/B0BLK3MKJV/ref=cs_sr_dp_6?keywords=iphone+cases&qid=1703020408&sr=8-35',48,'2023-12-19 15:13:29.395397-06','2023-12-19 15:13:29.395397-06','www.amazon.com'),
+ (3799,'FireNova Designed for iPhone 15 Case, Silicone Upgraded [Camera Protection] Phone Case with [2 Screen Protectors], Soft Anti-Scratch Microfiber Lining Inside, 6.1 inch, Light Brown',NULL,'B0CBP8NQ34','https://m.media-amazon.com/images/I/711BCCAg52L._AC_UY218_.jpg',357,4.6,'$14.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FireNova-iPhone-15-Protection-Anti-Scratch/dp/B0CBP8NQ34/ref=cs_sr_dp_n?keywords=iphone+cases&qid=1703020408&sr=8-36',48,'2023-12-19 15:13:29.402283-06','2023-12-19 15:13:29.402283-06','www.amazon.com'),
+ (3800,'Fiyart Compatible with iPhone 13 Pro Max Case,Compatible with MagSafe Love Heart Plating Camera Protection Clear Phone Case, Magnetic Glitter for Women Girls Shockproof Back Bumper 6.7"-Gold',NULL,'B0C38H5LP7','https://aax-us-iad.amazon.com/e/loi/imp?b=JO6_fYifp0EsB3LMHOm26EEAAAGMg-0unAEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICA2yP0I',542,4.5,'$16.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RO6_fYifp0EsB3LMHOm26EEAAAGMg-0uXwEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICA2yP0I/https://www.amazon.com/Fiyart-Compatible-Protection-Magnetic-Shockproof/dp/B0C38H5LP7/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=iphone+cases&keywords=iphone+cases&pd_rd_i=B0C38H5LP7&pd_rd_r=9ba73305-7cd1-4a30-a0e6-03532d8f80a3&pd_rd_w=84v1e&pd_rd_wg=rtxEl&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=STF1Q0QC8QTD492084ZQ&qid=1703020408&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-17-48f7baba-8e26-45f3-8811-e1a601ad20bf',48,'2023-12-19 15:13:29.410111-06','2023-12-19 15:13:29.410111-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3801,'LEIAU for Samsung Galaxy z-Fold-4 Case: Transparent Electroplating Protective Phone Case with Full Cover Hinge Protection, Clear Case with Built-in Screen Protector & Kickstand for Z Fold 4 5G (Gold)',NULL,'B0BYJXX7KC','https://m.media-amazon.com/images/I/61buaT77rJL._AC_UY218_.jpg',153,3.7,'$39.86','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNjY2OTUwOTk0NzA1NzE3OjE3MDMwMjA0MTc6c3BfYXRmOjMwMDA5NjExNzM2MjEwMjo6MDo6&url=%2FLEIAU-Samsung-Galaxy-z-Fold-4-Built%2Fdp%2FB0BYJXX7KC%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020417%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',49,'2023-12-19 15:13:38.224314-06','2023-12-19 15:13:38.224314-06','www.amazon.com'),
+ (3802,'i-Blason Armorbox Designed for Samsung Galaxy S23 FE Case with Kickstand & Belt Clip, Full-Body Rugged Bumper Case with Built-in Screen Protector (Black)',NULL,'B0CH82KKK4','https://m.media-amazon.com/images/I/71HeecLGNvL._AC_UY218_.jpg',35,4.3,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNjY2OTUwOTk0NzA1NzE3OjE3MDMwMjA0MTc6c3BfYXRmOjMwMDA2NDk5NTI3MjMwMjo6MDo6&url=%2Fi-Blason-Armorbox-Kickstand-Full-Body-Protector%2Fdp%2FB0CH82KKK4%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020417%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',49,'2023-12-19 15:13:38.234491-06','2023-12-19 15:13:38.234491-06','www.amazon.com'),
+ (3803,'SKTGSLAMY for Galaxy S22 Case,Samsung Galaxy S22 Case with Screen Protectors and Camera Cover,[Military Grade] 16ft.Drop Tested Cover with Magnetic Kickstand Protective Case for S22 (TC-Blue)',NULL,'B0CBS9GRYN','https://m.media-amazon.com/images/I/71uT4C5HZ+L._AC_UY218_.jpg',823,4.4,'$6.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SKTGSLAMY-Protectors-16ft-Drop-Kickstand-Protective/dp/B0CBS9GRYN/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-3',49,'2023-12-19 15:13:38.241827-06','2023-12-19 15:13:38.241827-06','www.amazon.com'),
+ (3804,'SPIDERCASE Designed for Samsung Galaxy S23 Case, [10 FT Military Grade Drop Protection], 2 Pack [Tempered Glass Screen Protector+Camera Lens Protector] Heavy Duty Shockproof Case, Black',NULL,'B0BPHLRYY8','https://m.media-amazon.com/images/I/81ehY09b0yL._AC_UY218_.jpg',1450,4.5,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SPIDERCASE-S23-Protection-Protector-Shockproof/dp/B0BPHLRYY8/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-4',49,'2023-12-19 15:13:38.248772-06','2023-12-19 15:13:38.248772-06','www.amazon.com'),
+ (3805,'Warsia for Samsung Galaxy A03S Case, Galaxy A03S Case with Screen Protector [Military Grade Drop Tested] Heavy-Duty Tough Rugged Shockproof Protective Case for Samsung A03S, Black',NULL,'B09WRJ9MHZ','https://m.media-amazon.com/images/I/71nQBko0b+L._AC_UY218_.jpg',1485,4.6,'$8.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Warsia-Protector-Heavy-Duty-Shockproof-Protective/dp/B09WRJ9MHZ/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-5',49,'2023-12-19 15:13:38.257168-06','2023-12-19 15:13:38.257168-06','www.amazon.com'),
+ (4572,'BAGSMART Toiletry Bag for Men, Large Travel Toiletry Organizer, Dopp Kit Water-resistant Shaving Bag for Toiletries Accessories - Black',NULL,'B0BL339917','https://m.media-amazon.com/images/I/71TteFJ2wvL._AC_UL320_.jpg',456,4.6,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BAGSMART-Organizer-Water-resistant-Toiletries-Accessories/dp/B0BL339917/ref=sr_1_71?keywords=travel+accessories&qid=1703020686&sr=8-71',57,'2023-12-19 15:18:07.982082-06','2023-12-19 15:18:07.982082-06','www.amazon.com'),
+ (3807,'LeYi for Galaxy A14-5G Case: Samsung A 14 Case with 2 Pack Screen Protectors, Heavy Duty Case with Slide Camera Cover, Magnetic Rotatable Ring Kickstand for Samsung Galaxy A14 5G, Black',NULL,'B0BQ674PN5','https://m.media-amazon.com/images/I/8173+GO7LhL._AC_UL320_.jpg',620,4.6,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQwNTM2NzgzNjEyNzE3OjE3MDMwMjA0MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE2NTc3NjY3OTE5ODo6MDo6&url=%2FLeYi-Galaxy-A14-5G-Phone-Case%2Fdp%2FB0BQ674PN5%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB0BQ674PN5%26pd_rd_r%3D75a43227-955e-4b7d-898f-2ee721d0e18e%26pd_rd_w%3D1SxEC%26pd_rd_wg%3D7aNQs%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3D8HAVK4VBYP3JPTD9JHDP%26qid%3D1703020417%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:38.271869-06','2023-12-19 15:13:38.271869-06','www.amazon.com'),
+ (4055,'ASICS',NULL,'B08RXWR9LB','https://m.media-amazon.com/images/I/71tb156++dL._AC_UL320_.jpg',2238,4.5,'$39.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Mens-Black-Graphite-X-Wide/dp/B08RXWR9LB/ref=sr_1_46?keywords=men%27s+shoes&qid=1703020483&sr=8-46',53,'2023-12-19 15:14:45.047637-06','2023-12-19 15:14:45.047637-06','www.amazon.com'),
+ (4573,'[20Park]UMUST Silicone Cable Ties,Reusable Cable Management Organizer, Multipurpose Elastic Cord Organizer for Bundling and Fastening Cable Cords Wires(black,white,pink,green)',NULL,'B0B2CD4881','https://m.media-amazon.com/images/I/717w3xj1oJL._AC_UL320_.jpg',2030,4.7,'$9.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/UMUST-Management-Organizer-Multipurpose-Fastening/dp/B0B2CD4881/ref=sr_1_72?keywords=travel+accessories&qid=1703020686&sr=8-72',57,'2023-12-19 15:18:07.987469-06','2023-12-19 15:18:07.987469-06','www.amazon.com'),
+ (3808,'SOiOS for Samsung Galaxy A03S Phone Case: Built in Hard Kickstand & Touch Protector Military Shockproof TPU Durable Soft Rugged Heavy Duty Armor Full Body Protection Grade Phone Cover - Black',NULL,'B09PG2J7CR','https://m.media-amazon.com/images/I/817mJLFTDgL._AC_UL320_.jpg',1585,4.6,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQwNTM2NzgzNjEyNzE3OjE3MDMwMjA0MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA0MjU3NzM4NjE5ODo6MTo6&url=%2FSamsung-Galaxy-A03S-Phone-Case%2Fdp%2FB09PG2J7CR%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB09PG2J7CR%26pd_rd_r%3D75a43227-955e-4b7d-898f-2ee721d0e18e%26pd_rd_w%3D1SxEC%26pd_rd_wg%3D7aNQs%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3D8HAVK4VBYP3JPTD9JHDP%26qid%3D1703020417%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:38.278484-06','2023-12-19 15:13:38.278484-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3809,'Encased DuraClip Designed for Samsung Galaxy S23 Belt Clip Case with Phone Holster and Kickstand (Matte Black)',NULL,'B0BSN89L3N','https://m.media-amazon.com/images/I/81O7PDkQqPL._AC_UL320_.jpg',157,4.6,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQwNTM2NzgzNjEyNzE3OjE3MDMwMjA0MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDEyNTQ5OTM4Mzg5ODo6Mjo6&url=%2FEncased-DuraClip-Designed-Samsung-Kickstand%2Fdp%2FB0BSN89L3N%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB0BSN89L3N%26pd_rd_r%3D75a43227-955e-4b7d-898f-2ee721d0e18e%26pd_rd_w%3D1SxEC%26pd_rd_wg%3D7aNQs%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3D8HAVK4VBYP3JPTD9JHDP%26qid%3D1703020417%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:38.284334-06','2023-12-19 15:13:38.284334-06','www.amazon.com'),
+ (3810,'SINIANL Samsung Galaxy S23 Wallet Case with RFID Blocking, Samsung S23 Case Wallet for Women Men with Card Holder Magnetic Clasp Kickstand Leather Book Folio Case for Galaxy S23 Black',NULL,'B0C6F2TDCT','https://m.media-amazon.com/images/I/81j4AxE9E-L._AC_UL320_.jpg',34,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQwNTM2NzgzNjEyNzE3OjE3MDMwMjA0MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAxODQyNDczNjQwMjo6Mzo6&url=%2FSINIANL-Samsung-Blocking-Magnetic-Kickstand%2Fdp%2FB0C6F2TDCT%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB0C6F2TDCT%26pd_rd_r%3D75a43227-955e-4b7d-898f-2ee721d0e18e%26pd_rd_w%3D1SxEC%26pd_rd_wg%3D7aNQs%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3D8HAVK4VBYP3JPTD9JHDP%26qid%3D1703020417%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:38.290029-06','2023-12-19 15:13:38.290029-06','www.amazon.com'),
+ (3806,'Jshru for Galaxy S20 Case, Military-Grade Protective Heavy Duty Phone Case, Shockproof Drop/Dust Proof 3-Layer Heavy Duty Protection Case for Samsung Galaxy S20 5G 6.2 Inch, Black',NULL,'B0BW3QT1VX','https://m.media-amazon.com/images/I/818kqDZl5iL._AC_UL320_.jpg',148,4.4,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQwNTM2NzgzNjEyNzE3OjE3MDMwMjA0MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5NjEwMDU2ODIwMjo6NDo6&url=%2FJshru-Military-Grade-Protective-Shockproof-Protection%2Fdp%2FB0BW3QT1VX%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB0BW3QT1VX%26pd_rd_r%3D75a43227-955e-4b7d-898f-2ee721d0e18e%26pd_rd_w%3D1SxEC%26pd_rd_wg%3D7aNQs%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3D8HAVK4VBYP3JPTD9JHDP%26qid%3D1703020417%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:38.264488-06','2023-12-19 15:13:38.295982-06','www.amazon.com'),
+ (3811,'Raelmila Shockproof for Samsung Galaxy S23 Case, 12FT Military Grade Drop Tested, Anti-Fingerprint Anti-Scratch Semi-Clear Back with Silicone Slim Thin Protective Phone Case for Galaxy S23, Black',NULL,'B0CCNG573H','https://m.media-amazon.com/images/I/61VcjToXcQL._AC_UY218_.jpg',213,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Raelmila-Samsung-Galaxy-S23-Anti-Fingerprint/dp/B0CCNG573H/ref=cs_sr_dp_4?keywords=samsung+cases&qid=1703020417&sr=8-6',49,'2023-12-19 15:13:38.303065-06','2023-12-19 15:13:38.303065-06','www.amazon.com'),
+ (3812,'Crave Dual Guard for Samsung Galaxy S23 , Shockproof Protection Layer Case - Forest Green',NULL,'B0BRJ8RQS8','https://aax-us-iad.amazon.com/e/loi/imp?b=JBosSj5JJUiI7dJyEAf-kvIAAAGMg-105wEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICCcg1s3',1566,4.7,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crave-Samsung-Galaxy-Shockproof-Protection/dp/B0BRJ8RQS8/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-7',49,'2023-12-19 15:13:38.309648-06','2023-12-19 15:13:47.446325-06','www.amazon.com'),
+ (3813,'SURITCH for Samsung Galaxy S23 6.1 Inch Case, [Built-in Screen Protector] [Dual-Layer Protection ] Full Shockproof Rugged Bumper Phone Protective Cover - Purple Cosmos',NULL,'B0BRRM8WRS','https://m.media-amazon.com/images/I/81xPmjR8wnL._AC_UY218_.jpg',405,4.3,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SURITCH-Samsung-Galaxy-S23-Dual-Layer/dp/B0BRRM8WRS/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-8',49,'2023-12-19 15:13:38.316107-06','2023-12-19 15:13:38.316107-06','www.amazon.com'),
+ (3814,'TORRAS Shockproof for Samsung Galaxy S23 Case, [Military Grade Drop Tested] Translucent Matte Hard Back & Soft Edge Slim Protective Compatible for Samsung S23 Case 5G Guardian Series, Black',NULL,'B0BMLMPSH7','https://m.media-amazon.com/images/I/61-06Ht-t7L._AC_UY218_.jpg',12961,4.6,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TORRAS-Military-Translucent-Protective-Compatible/dp/B0BMLMPSH7/ref=cs_sr_dp_5?keywords=samsung+cases&qid=1703020417&sr=8-9',49,'2023-12-19 15:13:38.323666-06','2023-12-19 15:13:38.323666-06','www.amazon.com'),
+ (3815,'FNTCASE for Samsung Galaxy S23 Phone Case: Protective Rugged S23 5G Mobile Cover with Kickstand | Military Grade Drop Protection Shockproof TPU Durable Matte Textured Sturdy Bumper Cases 6.1''''',NULL,'B0BQHZJ93G','https://m.media-amazon.com/images/I/81gt-WP+6tL._AC_UY218_.jpg',2381,4.4,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FNTCASE-Samsung-Galaxy-S23-Case/dp/B0BQHZJ93G/ref=cs_sr_dp?keywords=samsung+cases&qid=1703020417&sr=8-10',49,'2023-12-19 15:13:38.330152-06','2023-12-19 15:13:38.330152-06','www.amazon.com'),
+ (3816,'FNTCASE for Samsung Galaxy A23 5G Case: (Samsung Galaxy A23 4G LTE) Dual Layer Protective Heavy Duty Cell Phone Cover Shockproof Rugged with Non Slip Textured Back - Bumper - 6.6inch (Matte Black)',NULL,'B0BC1HN2WN','https://m.media-amazon.com/images/I/71b2Yv5YuCL._AC_UY218_.jpg',1080,4.4,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Samsung-Galaxy-A23-Case-Shockproof/dp/B0BC1HN2WN/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-11',49,'2023-12-19 15:13:38.336635-06','2023-12-19 15:13:38.336635-06','www.amazon.com'),
+ (3817,'Gear4 ZAGG Copenhagen - Black Case - That Highlights The D3O Protection Material for Samsung Galaxy S22',NULL,'B09RQ9VVXR','https://m.media-amazon.com/images/I/51dK46bUB-L._AC_UY218_.jpg',1,3.0,'$18.22','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNjY2OTUwOTk0NzA1NzE3OjE3MDMwMjA0MTc6c3BfbXRmOjMwMDA4NTgzMDU4MjQwMjo6MDo6&url=%2FZAGG-Gear4-Copenhagen-Highlights-Protection%2Fdp%2FB09RQ9VVXR%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020417%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',49,'2023-12-19 15:13:38.342594-06','2023-12-19 15:13:38.342594-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3818,'Guzhthi for Samsung Galaxy A04 Case: with Cell Phone Screen Protector Glass and Camera Back Cover Protective Heavy Duty Shockproof Rugged - Military Protection Bumper - Black Jc',NULL,'B0C6F3XRZG','https://aax-us-iad.amazon.com/e/loi/imp?b=JF7WXEXt70Tm4hylddORcz4AAAGMg-1RJAEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICCLxaPr',2,5.0,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RF7WXEXt70Tm4hylddORcz4AAAGMg-1Q9AEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICCLxaPr/https://www.amazon.com/Guzhthi-Samsung-Galaxy-A04-Case/dp/B0C6F3XRZG/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=samsung+cases&keywords=samsung+cases&pd_rd_i=B0C6F3XRZG&pd_rd_r=75a43227-955e-4b7d-898f-2ee721d0e18e&pd_rd_w=rFPcj&pd_rd_wg=7aNQs&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=8HAVK4VBYP3JPTD9JHDP&qid=1703020417&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',49,'2023-12-19 15:13:38.349276-06','2023-12-19 15:13:38.349276-06','www.amazon.comhttps:'),
+ (3819,'Rancase for Galaxy A13 5G Case,Three Layer Heavy Duty Shockproof Protection Hard Plastic Bumper +Soft Silicone Rubber Protective Case for Samsung Galaxy A13 5G,Purple Butterfly',NULL,'B0CDLHRHK6','https://m.media-amazon.com/images/I/71f7JAYOHiL._AC_UY218_.jpg',1219,4.4,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rancase-Shockproof-Protection-Protective-Butterfly/dp/B0CDLHRHK6/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-13',49,'2023-12-19 15:13:38.356032-06','2023-12-19 15:13:38.356032-06','www.amazon.com'),
+ (3820,'LeYi for Samsung Galaxy A14 5G Case: with 2 Pack Tempered Glass Screen Protector and 360° Rotatable Ring Holder Magnetic Kickstand, Plating Rose Gold Edge Protective Samsung A 14 5G Case, Black',NULL,'B0BTBHGRXN','https://m.media-amazon.com/images/I/71Zp+ThwPKL._AC_UY218_.jpg',912,4.6,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LeYi-Samsung-Galaxy-A14-Case/dp/B0BTBHGRXN/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020417&sr=8-14',49,'2023-12-19 15:13:38.362229-06','2023-12-19 15:13:38.362229-06','www.amazon.com'),
+ (3860,'Spigen Tough Armor OnePlus 11 Case (2023) - Black, Shock-Absorbent, Kickstand',NULL,'B0BJ7LKC8L','https://m.media-amazon.com/images/I/618bTkDoo1L._AC_UY218_.jpg',528,4.2,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Tough-Armor-Designed-OnePlus/dp/B0BJ7LKC8L/ref=cs_sr_dp_2?keywords=oneplus+cases&qid=1703020435&sr=8-5',50,'2023-12-19 15:13:56.564379-06','2023-12-19 15:13:56.564379-06','www.amazon.com'),
+ (3822,'for Samsung Galaxy A03s Phone Case: Shockproof Silicone Slim Covers Hybrid Pretty Protective Cell Cases - Durable TPU Dual Layer Drop-Proof Girl&Boy Cute Cover (Lavender Purple)',NULL,'B09PV8LNQJ','https://m.media-amazon.com/images/I/61HkoK0mbuL._AC_UY218_.jpg',2742,4.6,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Samsung-Galaxy-A03s-Phone-Case/dp/B09PV8LNQJ/ref=cs_sr_dp_6?keywords=samsung+cases&qid=1703020417&sr=8-16',49,'2023-12-19 15:13:38.376864-06','2023-12-19 15:13:38.376864-06','www.amazon.com'),
+ (3823,'Androgate for Samsung Galaxy S9 Case with HD Screen Protectors, Military-Grade Metal Ring Holder Kickstand 15ft Drop Tested Shockproof Cover Case for Samsung Galaxy S9 (2018), Black',NULL,'B08HRM5KHV','https://m.media-amazon.com/images/I/711qAUiz61L._AC_UY218_.jpg',5918,4.3,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNjY2OTUwOTk0NzA1NzE3OjE3MDMwMjA0MTc6c3BfbXRmOjIwMDA2NDk5MDU5NzY0MTo6MDo6&url=%2FGalaxy-Case-Androgate-Military-Grade-Black%2Fdp%2FB08HRM5KHV%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020417%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',49,'2023-12-19 15:13:38.383714-06','2023-12-19 15:13:38.383714-06','www.amazon.com'),
+ (3824,'NZND Compatible with Samsung Galaxy A03S Case with Tempered Glass Screen Protector, Ring Holder/Wrist Strap, Glitter Liquid Floating Waterfall Durable Girls Women Kids Cute Case (Aqua/Purple)',NULL,'B09QFPPYXX','https://m.media-amazon.com/images/I/81nUyClxCAL._AC_UY218_.jpg',738,4.5,'$13.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/NZND-Tempered-Protector-Coverage-Waterfall/dp/B09QFPPYXX/ref=cs_sr_dp?keywords=samsung+cases&qid=1703020417&sr=8-18',49,'2023-12-19 15:13:38.390844-06','2023-12-19 15:13:38.390844-06','www.amazon.com'),
+ (3825,'Mous for Samsung Galaxy S23 Ultra Case MagSafe Compatible - Limitless 5.0 - Walnut - Protective S23 Ultra Case - Shockproof Phone Cover',NULL,'B0BSXQXCH8','https://m.media-amazon.com/images/I/710HPmw5WbL._AC_UY218_.jpg',657,4.5,'$64.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mous-Compatible-Limitless-Superior-Protection/dp/B0BSXQXCH8/ref=cs_sr_dp_4?keywords=samsung+cases&qid=1703020417&sr=8-19',49,'2023-12-19 15:13:38.396873-06','2023-12-19 15:13:38.396873-06','www.amazon.com'),
+ (3826,'i-Blason Armorbox for Samsung Galaxy S23 Case with Built-in Screen Protector, [2 Front Frames] Full-Body Rugged Anti-Slip Bumper Case with Kickstand & Belt Clip Holster (Green)',NULL,'B0BQLRKXLJ','https://m.media-amazon.com/images/I/71wuEYFNgyL._AC_UY218_.jpg',408,4.1,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/i-Blason-Protector-Full-Body-Anti-Slip-Kickstand/dp/B0BQLRKXLJ/ref=cs_sr_dp?keywords=samsung+cases&qid=1703020417&sr=8-20',49,'2023-12-19 15:13:38.404491-06','2023-12-19 15:13:38.404491-06','www.amazon.com'),
+ (3827,'ZAGG Gear4 Denali Samsung Galaxy S23 Series Phone Case (Textured), D30 Drop Protection up to 16ft / 5m, Works with Wireless Charging Systems, Reinforced Backplate with Edge-to-Edge Protection Black',NULL,'B0BS4BC8Y2','https://m.media-amazon.com/images/I/418cP6e5pFL._AC_UY218_.jpg',10,4.5,'$42.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNjY2OTUwOTk0NzA1NzE3OjE3MDMwMjA0MTc6c3BfYnRmOjMwMDA4Nzg3MTcwNzEwMjo6MDo6&url=%2FZAGG-Textured-Protection-Reinforced-Backplate%2Fdp%2FB0BS4BC8Y2%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020417%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',49,'2023-12-19 15:13:38.411204-06','2023-12-19 15:13:38.411204-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3828,'Esdot Compatible with Samsung Galaxy S20 FE Case with Built-in Screen Protector,with Fashionable Designs for Women Girls,Protective Phone Case for Galaxy S20 FE 6.5" Agate Stone',NULL,'B09HTC7FJM','https://aax-us-iad.amazon.com/e/loi/imp?b=JFmUBOAup3H_XibwvFTkghgAAAGMg-1ROQEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICD3-DoP',3045,4.4,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RFmUBOAup3H_XibwvFTkghgAAAGMg-1RDwEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICD3-DoP/https://www.amazon.com/Samsung-Galaxy-S20-Fashionable-6-5/dp/B09HTC7FJM/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b%3Aamzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&cv_ct_cx=samsung+cases&keywords=samsung+cases&pd_rd_i=B09HTC7FJM&pd_rd_r=9752060f-f0c6-415d-8a3b-ca13a1a2a766&pd_rd_w=MXggE&pd_rd_wg=bR4Zc&pf_rd_p=e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&pf_rd_r=8HAVK4VBYP3JPTD9JHDP&qid=1703020417&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-a61ee601-6e56-4862-a8a2-1d3da5a5406f',49,'2023-12-19 15:13:38.417771-06','2023-12-19 15:13:38.417771-06','www.amazon.comhttps:'),
+ (3829,'DEFBSC Compatible with Samsung Galaxy S23 Plus Case with Gold Heart, Luxury Plating Edge Bumper Cute Case with Full Camera Protection for Women Girls, Anti-Scratch Shockproof Phone Cover,White',NULL,'B0BTHQZZQQ','https://m.media-amazon.com/images/I/71lB0Fw3A6L._AC_UY218_.jpg',34,4.3,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0OTA5NjM0ODQ4MjU3NzE3OjE3MDMwMjA0MjY6c3BfYXRmX25leHQ6MjAwMTI5ODUwMzExNjk4OjowOjo&url=%2FDEFBSC-Compatible-Protection-Anti-Scratch-Shockproof%2Fdp%2FB0BTHQZZQQ%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020426%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',49,'2023-12-19 15:13:47.204203-06','2023-12-19 15:13:47.204203-06','www.amazon.com'),
+ (3830,'Androgate for Samsung Galaxy S9 Case with HD Screen Protectors, Military-Grade Metal Ring Holder Kickstand 15ft Drop Tested Shockproof Cover Case for Samsung Galaxy S9 (2018), Blue',NULL,'B08HRL5ZK1','https://m.media-amazon.com/images/I/71oGL8IJPXL._AC_UY218_.jpg',5918,4.3,'$10.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0OTA5NjM0ODQ4MjU3NzE3OjE3MDMwMjA0MjY6c3BfYXRmX25leHQ6MjAwMDY0OTkwNTk3NTQxOjowOjo&url=%2FGalaxy-Case-Androgate-Military-Grade-Blue%2Fdp%2FB08HRL5ZK1%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020426%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',49,'2023-12-19 15:13:47.226167-06','2023-12-19 15:13:47.226167-06','www.amazon.com'),
+ (3831,'FNTCASE for Samsung Galaxy A14-5G Case: Dual-Layer Protective Textured Shockproof Rugged TPU Cover with Kickstand | Military Grade Drop Protection | Heavy Duty Cell Phone Protector - Black',NULL,'B0BVYZFP75','https://m.media-amazon.com/images/I/71gLoagBbwL._AC_UY218_.jpg',832,4.5,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FNTCASE-Samsung-Galaxy-A14-5G-Case/dp/B0BVYZFP75/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-19',49,'2023-12-19 15:13:47.233173-06','2023-12-19 15:13:47.233173-06','www.amazon.com'),
+ (3832,'TISOOG Compatible with Samsung Galaxy S23 Case 6.1 inch-Silicone Full Cover Shockproof Protective Case with Soft Microfiber Lining Support Wireless Charging Phone Case for Samsung S23,Hot Pink',NULL,'B0BNCZBNNP','https://m.media-amazon.com/images/I/71KfUF6Cs+L._AC_UY218_.jpg',681,4.4,'$13.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TISOOG-Compatible-inch-Silicone-Shockproof-Protective/dp/B0BNCZBNNP/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-20',49,'2023-12-19 15:13:47.239704-06','2023-12-19 15:13:47.239704-06','www.amazon.com'),
+ (3833,'ZTOFERA Designed for Samsung Galaxy S20 FE 5G Case,Luxury Plating Edge Love Hearts Pattern with Wristband Kickstand Camera Lens Protection,Soft Shockproof Cover for Girls Women,White',NULL,'B0BLC5S6B4','https://m.media-amazon.com/images/I/91bs7-e+xoL._AC_UY218_.jpg',207,4.2,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ZTOFERA-Wristband-Kickstand-Protection-Shockproof/dp/B0BLC5S6B4/ref=cs_sr_dp_3?keywords=samsung+cases&qid=1703020426&sr=8-21',49,'2023-12-19 15:13:47.247077-06','2023-12-19 15:13:47.247077-06','www.amazon.com'),
+ (4574,'Passport Holder Cover Wallet Travel Essentials RFID Blocking Leather Card Case International Travel Must Haves Travel Accessories for Women Men(101#Coffee Grey)',NULL,'B0759HJL1M','https://m.media-amazon.com/images/I/81-1-O9PeCL._AC_UL320_.jpg',13950,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Passport-Blocking-Leather-Document-Organizer/dp/B0759HJL1M/ref=sr_1_75?keywords=travel+accessories&qid=1703020686&sr=8-75',57,'2023-12-19 15:18:07.992843-06','2023-12-19 15:18:07.992843-06','www.amazon.com'),
+ (3835,'Dexnor for Samsung Galaxy S10 Case, [Built in Screen Protector and Kickstand] Heavy Duty Military Grade Protection Shockproof Protective Cover for Samsung Galaxy S10 Black',NULL,'B098DZTZLD','https://m.media-amazon.com/images/I/71+GaWmqTtS._AC_UL320_.jpg',2288,4.3,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQ0OTc0MTA2NjU2NzE3OjE3MDMwMjA0MjY6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA1NTc1MjI5OTI5ODo6MDo6&url=%2FDexnor-S10-Protection-Shockproof-Protective%2Fdp%2FB098DZTZLD%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB098DZTZLD%26pd_rd_r%3D571ec157-fea8-4649-aa2a-8407f9ddadc3%26pd_rd_w%3D73xXx%26pd_rd_wg%3DASIBy%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFTZDZZSDRH1HGW2NNS80%26qid%3D1703020426%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-17-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:47.261851-06','2023-12-19 15:13:47.261851-06','www.amazon.com'),
+ (3836,'Dexnor for Samsung Galaxy S10+ Plus Case, [Built in Screen Protector and Kickstand] Heavy Duty Military Grade Protection Shockproof Protective Cover for Samsung Galaxy S10 Plus Black',NULL,'B098F1MZLL','https://m.media-amazon.com/images/I/71m0f6JtFJS._AC_UL320_.jpg',2812,4.4,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQ0OTc0MTA2NjU2NzE3OjE3MDMwMjA0MjY6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA1NTc1MzM3MjA5ODo6MTo6&url=%2FDexnor-S10-Plus-Protection-Shockproof%2Fdp%2FB098F1MZLL%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB098F1MZLL%26pd_rd_r%3D571ec157-fea8-4649-aa2a-8407f9ddadc3%26pd_rd_w%3D73xXx%26pd_rd_wg%3DASIBy%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFTZDZZSDRH1HGW2NNS80%26qid%3D1703020426%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-18-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:47.270557-06','2023-12-19 15:13:47.270557-06','www.amazon.com'),
+ (3837,'KSWOUS for Samsung S23 FE Case with 2 Pack Screen Protector, Liquid Silicone with Soft Anti-Scratch Microfiber Lining Shockproof Protective Cover for Galaxy S23 FE 5G Silicone Phone Case Black',NULL,'B0CKW6P1PQ','https://m.media-amazon.com/images/I/61bYTu7MI+L._AC_UL320_.jpg',15,4.9,'$11.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQ0OTc0MTA2NjU2NzE3OjE3MDMwMjA0MjY6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA3NzAwNDU0ODEwMjo6Mjo6&url=%2FKSWOUS-Anti-Scratch-Microfiber-Shockproof-Protective%2Fdp%2FB0CKW6P1PQ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB0CKW6P1PQ%26pd_rd_r%3D571ec157-fea8-4649-aa2a-8407f9ddadc3%26pd_rd_w%3D73xXx%26pd_rd_wg%3DASIBy%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFTZDZZSDRH1HGW2NNS80%26qid%3D1703020426%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-19-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:47.277384-06','2023-12-19 15:13:47.277384-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3838,'SINIANL Samsung Galaxy S23 Plus Case, Galaxy S23 Plus Leather Case, Vintage Wallet Case Book Folding Flip Case with Kickstand Card Holders Slots Protective Cover for Galaxy S23 Plus / S23+ Black',NULL,'B0BX932SK9','https://m.media-amazon.com/images/I/81ll-jnF43L._AC_UL320_.jpg',58,4.4,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQ0OTc0MTA2NjU2NzE3OjE3MDMwMjA0MjY6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE1MDA5MjY1NDk5ODo6Mzo6&url=%2FSINIANL-Samsung-Leather-Kickstand-Protective%2Fdp%2FB0BX932SK9%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB0BX932SK9%26pd_rd_r%3D571ec157-fea8-4649-aa2a-8407f9ddadc3%26pd_rd_w%3D73xXx%26pd_rd_wg%3DASIBy%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFTZDZZSDRH1HGW2NNS80%26qid%3D1703020426%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-20-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:47.28485-06','2023-12-19 15:13:47.28485-06','www.amazon.com'),
+ (3834,'Dexnor for Samsung Galaxy S20 FE Case, [Built in Screen Protector and Kickstand] Heavy Duty Military Grade Protection Shockproof Protective Cover for Samsung Galaxy S20 FE 5G, 6.5 inch Black',NULL,'B08V4B9359','https://m.media-amazon.com/images/I/71fE6clV0tL._AC_UL320_.jpg',4276,4.4,'$16.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NjQ0OTc0MTA2NjU2NzE3OjE3MDMwMjA0MjY6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA3MzY2MDQwNjA5ODo6NDo6&url=%2FDexnor-Samsung-Galaxy-S20-Case%2Fdp%2FB08V4B9359%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dsamsung%2Bcases%26keywords%3Dsamsung%2Bcases%26pd_rd_i%3DB08V4B9359%26pd_rd_r%3D571ec157-fea8-4649-aa2a-8407f9ddadc3%26pd_rd_w%3D73xXx%26pd_rd_wg%3DASIBy%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DFTZDZZSDRH1HGW2NNS80%26qid%3D1703020426%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-21-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',49,'2023-12-19 15:13:47.254904-06','2023-12-19 15:13:47.291068-06','www.amazon.com'),
+ (3839,'Crave Dual Guard for Samsung Galaxy S23 FE Case, Shockproof Protection Dual Layer Case for Samsung Galaxy S23 FE - Lilac',NULL,'B0CCBPPCTH','https://m.media-amazon.com/images/I/81mbVkr4+NL._AC_UY218_.jpg',88,4.7,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crave-Samsung-Galaxy-Shockproof-Protection/dp/B0CCBPPCTH/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-22',49,'2023-12-19 15:13:47.29827-06','2023-12-19 15:13:47.29827-06','www.amazon.com'),
+ (3840,'Hocase for Samsung Galaxy A54 5G Case 2023, Shockproof Heavy Duty Protection Soft Silicone Rubber Bumper+Hard Plastic Hybrid Protective Case for Women, Girls & Kids - When Purple Meets Blue',NULL,'B0BZNLRJ6Z','https://m.media-amazon.com/images/I/71GxNWsn83L._AC_UY218_.jpg',454,4.6,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hocase-Shockproof-Protection-Silicone-Protective/dp/B0BZNLRJ6Z/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-23',49,'2023-12-19 15:13:47.305906-06','2023-12-19 15:13:47.305906-06','www.amazon.com'),
+ (3841,'SKMY for Samsung Galaxy S23 Ultra Case,S23 Ultra Case,with Camera Cover,[Military Grade] 16ft.Drop Tested Cover with Magnetic Kickstand Protective Case for Galaxy S23 Ultra 6.8 inch, Blue',NULL,'B0C5WQTWR6','https://m.media-amazon.com/images/I/81yUt1Y76kL._AC_UY218_.jpg',133,4.2,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SKMY-Ultra-16ft-Drop-Kickstand-Protective/dp/B0C5WQTWR6/ref=cs_sr_dp_6?keywords=samsung+cases&qid=1703020426&sr=8-24',49,'2023-12-19 15:13:47.312231-06','2023-12-19 15:13:47.312231-06','www.amazon.com'),
+ (3842,'Plakill for Galaxy A14 5G Phone Case 3 in 1 Protective Designer Cute Strawberry Drop Tested Cute Cases for Women Girls Shockproof Protection Rugged Heavy Duty Cover for Samsung Galaxy A14 4G/5G',NULL,'B0C2VLG9GG','https://m.media-amazon.com/images/I/91RFvhJQ33L._AC_UY218_.jpg',106,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Plakill-A14-5G-Protective-Cases/dp/B0C2VLG9GG/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-25',49,'2023-12-19 15:13:47.321721-06','2023-12-19 15:13:47.321721-06','www.amazon.com'),
+ (4056,'Sperry',NULL,'B008TT8P5Q','https://m.media-amazon.com/images/I/71nFgTVa5qL._AC_UL320_.jpg',2505,4.6,'$36.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sperry-Mens-Bahama-Boat-Shoe/dp/B008TT8P5Q/ref=sr_1_47?keywords=men%27s+shoes&qid=1703020483&sr=8-47',53,'2023-12-19 15:14:45.055505-06','2023-12-19 15:14:45.055505-06','www.amazon.com'),
+ (3843,'SAMSUNG Galaxy Z Flip5 Silicone Phone Case with Ring, Clear Protective Cover with Soft Matte Finish, Secure Finger Grip, Stylish, Smooth Design, US Version, EF-PF731TOEGUS, Apricot',NULL,'B0C7CY6LQ8','https://m.media-amazon.com/images/I/61eV1jK+ZjL._AC_UY218_.jpg',19,3.9,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SAMSUNG-Silicone-Protective-Stylish-EF-PF731TOEGUS/dp/B0C7CY6LQ8/ref=cs_sr_dp?keywords=samsung+cases&qid=1703020426&sr=8-26',49,'2023-12-19 15:13:47.332693-06','2023-12-19 15:13:47.332693-06','www.amazon.com'),
+ (3844,'ZTOFERA for Samsung Galaxy A54 5G Case, Galaxy A54 5G Phone Case Butterfly Electroplated Gold Edge Cute Case for A54 Samsung Phone Case for Women Girls,Black',NULL,'B0C5D51NW1','https://m.media-amazon.com/images/I/91dr8NwS-hL._AC_UY218_.jpg',70,4.4,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0OTA5NjM0ODQ4MjU3NzE3OjE3MDMwMjA0MjY6c3BfbXRmOjMwMDAwODc3NTEwNzAwMjo6MDo6&url=%2FZTOFERA-Samsung-Galaxy-Butterfly-Electroplated%2Fdp%2FB0C5D51NW1%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020426%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',49,'2023-12-19 15:13:47.343849-06','2023-12-19 15:13:47.343849-06','www.amazon.com'),
+ (3845,'ZTOFERA Compatible with Samsung Galaxy S20 FE 5G Case,Unique Curly Wave Frame Aesthetic Design Soft Liquid Silicone Anti-Fingerprint Shockproof Full Coverage Case for Samsung S20 FE - Black',NULL,'B0CM8XHDMC','https://m.media-amazon.com/images/I/71sn-ugeY7L._AC_UY218_.jpg',3,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0OTA5NjM0ODQ4MjU3NzE3OjE3MDMwMjA0MjY6c3BfbXRmOjMwMDA5NDg3OTc0NzQwMjo6MDo6&url=%2FZTOFERA-Compatible-Aesthetic-Anti-Fingerprint-Shockproof%2Fdp%2FB0CM8XHDMC%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020426%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',49,'2023-12-19 15:13:47.350852-06','2023-12-19 15:13:47.350852-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3846,'CASEKOO Genuine Official for Samsung Galaxy S23 Ultra case (10FT Military Drop Protection) (Zero-Smudge Tech) Translucent Hard Back & Soft Bumper, Protective Slim Thin S23 Ultra Case 6.8'''' 2023, Black',NULL,'B0BNNS7XMM','https://m.media-amazon.com/images/I/712ny7r8QgL._AC_UY218_.jpg',2013,4.5,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CASEKOO-Samsung-Galaxy-Ultra-case/dp/B0BNNS7XMM/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-29',49,'2023-12-19 15:13:47.36019-06','2023-12-19 15:13:47.36019-06','www.amazon.com'),
+ (3847,'FNTCASE for Samsung Galaxy S23 Case: Heavy Duty Rugged Shockproof Protective Cover with Belt-Clip Holster & Kickstand | Military Grade Protection Durable Phone Case for Galaxy S23 6.1 inch (Orange)',NULL,'B0BPRZBFPG','https://m.media-amazon.com/images/I/71p3tPZG1dL._AC_UY218_.jpg',582,4.2,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FNTCASE-Samsung-Galaxy-S23-Case/dp/B0BPRZBFPG/ref=cs_sr_dp?keywords=samsung+cases&qid=1703020426&sr=8-30',49,'2023-12-19 15:13:47.368511-06','2023-12-19 15:13:47.368511-06','www.amazon.com'),
+ (3848,'FNTCASE for Samsung Galaxy A14 5G Case: Shockproof Silicone Protective Phone Case with Built-in Screen Protector - Slim Dual Layer Rugged Durable Drop Proof TPU Protection Cover (Periwinkle Blue)',NULL,'B0BPL6SH8S','https://m.media-amazon.com/images/I/71kbwceLNXL._AC_UY218_.jpg',1861,4.6,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FNTCASE-Samsung-Galaxy-A14-Case/dp/B0BPL6SH8S/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-31',49,'2023-12-19 15:13:47.376383-06','2023-12-19 15:13:47.376383-06','www.amazon.com'),
+ (3849,'Casetego Compatible with Galaxy A54 5G Case,Marble Design Shockproof Dual Layer Full Body Rugged Hard PC Bumper Silicone Drop Protective Cover Case for Samsung Galaxy A54 5G(2023),Deep Purple',NULL,'B0BZYM5JVH','https://m.media-amazon.com/images/I/81d7oeBZDBL._AC_UY218_.jpg',18,3.8,'$4.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Casetego-Compatible-Shockproof-Silicone-Protective/dp/B0BZYM5JVH/ref=cs_sr_dp?keywords=samsung+cases&qid=1703020426&sr=8-32',49,'2023-12-19 15:13:47.384001-06','2023-12-19 15:13:47.384001-06','www.amazon.com'),
+ (3850,'Rancase for Galaxy A14 5G Case,[2 Tempered Glass Screen Protector + 2 Camera Lens Protector ] Three Layer Heavy Duty Shockproof Hard Plastic+Soft Protective Case for Samsung Galaxy A14 5G,Purple',NULL,'B0BRK812Q7','https://m.media-amazon.com/images/I/81PPeyaD90L._AC_UY218_.jpg',495,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rancase-Tempered-Protector-Shockproof-Protective/dp/B0BRK812Q7/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-33',49,'2023-12-19 15:13:47.393-06','2023-12-19 15:13:47.393-06','www.amazon.com'),
+ (4023,'Hetohec',NULL,'B08TZYZPQZ','https://m.media-amazon.com/images/I/81IhLdSyI-L._AC_UL320_.jpg',1248,4.3,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDEyNTM3MjU0MDE5ODo6MDo6&url=%2FLoafers-Athletic-Sneakers-Lightweight-Breathable%2Fdp%2FB08TZYZPQZ%2Fref%3Dsr_1_14_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-14-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.781396-06','2023-12-19 15:14:44.781396-06','www.amazon.com'),
+ (3851,'TOCOL for Samsung Galaxy S23 Case, with 2 Pack Screen Protector [Upgraded Full Camera Protection] [Military Grade Drop Tested] Translucent Matte Hard Back, Non-Slip Case for S23 6.1'''', Frosted Black',NULL,'B0BNVJSWWH','https://m.media-amazon.com/images/I/71Z4U8x5X4L._AC_UY218_.jpg',3183,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TOCOL-Samsung-Galaxy-S23-Translucent/dp/B0BNVJSWWH/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-34',49,'2023-12-19 15:13:47.403669-06','2023-12-19 15:13:47.403669-06','www.amazon.com'),
+ (3852,'LeYi for Samsung-Galaxy-A03S-Case: Samsung AO3S Phone Case with [2 Pack] Tempered Glass Screen Protectors, Dual Layer Hard PC Textured Back Soft Bumper Phone Case for Samsung A03S (Not Fit A03), Black',NULL,'B0BGMY687R','https://m.media-amazon.com/images/I/71CZlhQ7+PL._AC_UY218_.jpg',780,4.6,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LeYi-Samsung-Galaxy-A03S-Phone-Case/dp/B0BGMY687R/ref=cs_sr_dp_n?keywords=samsung+cases&qid=1703020426&sr=8-35',49,'2023-12-19 15:13:47.411677-06','2023-12-19 15:13:47.411677-06','www.amazon.com'),
+ (3853,'MOZOTER for Samsung Galaxy S23 Case with[2 Pcs Glass Screen Protector+2 Pcs Camera Lens Protector][Military Grade Drop Protection] Heavy Duty Shockproof Phone Case Cover 6.1'''' Black',NULL,'B0C2YV7F7J','https://m.media-amazon.com/images/I/81N85mgBaWL._AC_UY218_.jpg',331,4.5,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MOZOTER-Samsung-Galaxy-S23-Protection-Shockproof-Black/dp/B0C2YV7F7J/ref=cs_sr_dp_6?keywords=samsung+cases&qid=1703020426&sr=8-36',49,'2023-12-19 15:13:47.420511-06','2023-12-19 15:13:47.420511-06','www.amazon.com'),
+ (3854,'ANTSHARE for Galaxy Z Fold 5 Case with S Pen Holder, [Built-in Screen Protector] [Foldable Hidden Kickstand], Shockproof Rugged Hinge Protection Armor Case for Samsung Galaxy Z Fold 5- Black',NULL,'B0CCTYNBYZ','https://m.media-amazon.com/images/I/81xhu+r8adL._AC_UY218_.jpg',278,3.9,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0OTA5NjM0ODQ4MjU3NzE3OjE3MDMwMjA0MjY6c3BfYnRmOjMwMDA5NTE3MTA2OTAwMjo6MDo6&url=%2FANTSHARE-Protector-Kickstand-Shockproof-Protection%2Fdp%2FB0CCTYNBYZ%2Fref%3Dsr_1_37_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020426%26sr%3D8-37-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',49,'2023-12-19 15:13:47.431608-06','2023-12-19 15:13:47.431608-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3855,'SHIEID Galaxy Z Fold 4 Case with Hinge Protection, Armour Case for Samsung Galaxy Z Fold 4 Full-Body Dual Layer Rugged Case with Built-in Screen Protector & Kickstand & S Pen Slot, Orange',NULL,'B0C8FYJCB2','https://m.media-amazon.com/images/I/715vOUOYZTL._AC_UY218_.jpg',68,3.8,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0OTA5NjM0ODQ4MjU3NzE3OjE3MDMwMjA0MjY6c3BfYnRmOjMwMDAwODM0MDk3NDYwMjo6MDo6&url=%2FSHIEID-Galaxy-Protection-Samsung-Full-Body%2Fdp%2FB0C8FYJCB2%2Fref%3Dsr_1_38_sspa%3Fkeywords%3Dsamsung%2Bcases%26qid%3D1703020426%26sr%3D8-38-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',49,'2023-12-19 15:13:47.439275-06','2023-12-19 15:13:47.439275-06','www.amazon.com'),
+ (3856,'Encased DuraClip for OnePlus 10 Pro 5G Case with Belt Clip Holster (Slim Fit with Kickstand/Wireless Charging Compatible)',NULL,'B09XBMVZ4H','https://m.media-amazon.com/images/I/71UiaymjRHL._AC_UY218_.jpg',74,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NDEzMTcyMjQ1OTE3MTc6MTcwMzAyMDQzNTpzcF9hdGY6MjAwMDUxNDMzNDEwOTk4OjowOjo&url=%2FEncased-OnePlus-Case-Belt-Holster%2Fdp%2FB09XBMVZ4H%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020435%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',50,'2023-12-19 15:13:56.531366-06','2023-12-19 15:13:56.531366-06','www.amazon.com'),
+ (4575,'LeakLocks® Toiletry Skins™ Elastic Sleeve for Leak Proofing Travel Container in Luggage. For Standard and Travel Sized Toiletries. Reusable Accessory for Travel Bag Suitcase and Carry-on Luggage',NULL,'B0CGZ28DKB','https://m.media-amazon.com/images/I/71Nc-AfwM-L._AC_UL320_.jpg',2392,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LeakLocks%C2%AE-Toiletry-Container-Toiletries-Accessory/dp/B0CGZ28DKB/ref=sr_1_77?keywords=travel+accessories&qid=1703020686&sr=8-77',57,'2023-12-19 15:18:08.005058-06','2023-12-19 15:18:08.005058-06','www.amazon.com'),
+ (3858,'JXVM for OnePlus Nord N200 5G Case: Dual Layer Protective Heavy Duty Cell Phone Cover Shockproof Rugged with Non Slip Textured Back - Military Protection Bumper - 6.49inch (Black Black)',NULL,'B097ZRFRQL','https://m.media-amazon.com/images/I/71bTOXS8nuL._AC_UY218_.jpg',2036,4.6,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OnePlus-Nord-N200-Case-Protectors/dp/B097ZRFRQL/ref=cs_sr_dp_4?keywords=oneplus+cases&qid=1703020435&sr=8-3',50,'2023-12-19 15:13:56.546245-06','2023-12-19 15:13:56.546245-06','www.amazon.com'),
+ (4041,'Rockport',NULL,'B005UF9VB4','https://m.media-amazon.com/images/I/71Y2sS7K-+L._AC_UL320_.jpg',9847,4.2,'$64.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rockport-Mens-Chranson-Brown-Black/dp/B005UF9VB4/ref=sr_1_31?keywords=men%27s+shoes&qid=1703020483&sr=8-31',53,'2023-12-19 15:14:44.933949-06','2023-12-19 15:14:44.933949-06','www.amazon.com'),
+ (4576,'Lewis N. Clark RFID Blocking Stash Neck Wallet, Travel Pouch + Passport Holder for Women & Men, Taupe, One Size',NULL,'B0082C62BO','https://m.media-amazon.com/images/I/81LqTqU+iVL._AC_UL320_.jpg',11072,4.5,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Lewis-N-Clark-RFID-Blocking-Anti-Theft/dp/B0082C62BO/ref=sr_1_79?keywords=travel+accessories&qid=1703020686&sr=8-79',57,'2023-12-19 15:18:08.016584-06','2023-12-19 15:18:08.016584-06','www.amazon.com'),
+ (3857,'Poetic Revolution Case for OnePlus 7, [20FT Mil-Grade Drop Tested], Full-Body Rugged Dual-Layer Shockproof Protective Cover with Kickstand and Built-in-Screen Protector, Black',NULL,'B07QXGLDKQ','https://m.media-amazon.com/images/I/718P+asQQHL._AC_UL320_.jpg',1810,4.4,'$16.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NDEzMTcyMjQ1OTE3MTc6MTcwMzAyMDQzNTpzcF9hdGY6MjAwMDc1NDk3MjEzNjMxOjowOjo&url=%2FPoetic-Dual-Layer-Shockproof-Protective-Revolution%2Fdp%2FB07QXGLDKQ%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020435%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',50,'2023-12-19 15:13:56.540028-06','2023-12-19 15:13:56.580692-06','www.amazon.com'),
+ (3862,'Dionsibei Military Grade Drop Impact for Oneplus 9 Pro Case Oneplus 9 Pro 5G Case 360 Metal Rotating Ring Kickstand Holder Armor Heavy Duty Shockproof Case for Oneplus 9 Pro Phone Case (Rose Gold)',NULL,'B09889TD9R','https://m.media-amazon.com/images/I/710ETJXZEWS._AC_UL320_.jpg',430,4.3,'$9.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDMyNTU2MDA4MzU3NzE3OjE3MDMwMjA0MzU6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA0MTczNTkyNzQ5ODo6MTo6&url=%2FMilitary-Oneplus-Rotating-Kickstand-Shockproof%2Fdp%2FB09889TD9R%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB09889TD9R%26pd_rd_r%3Dc6833ca7-9b03-4026-9582-6bd0013c9ed9%26pd_rd_w%3Difx0E%26pd_rd_wg%3DhC8sQ%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DWAJNVSCDP3AC2CAJYC32%26qid%3D1703020435%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:13:56.588387-06','2023-12-19 15:13:56.588387-06','www.amazon.com'),
+ (3863,'Puxssul for OnePlus 10T Case 5G, Soft TPU Artificial Leather case,Extremely Light Ultra-Light Camera Protection Leather Cover Case for OnePlus 10T 5G.(Orange)',NULL,'B0BPPJ3B5R','https://m.media-amazon.com/images/I/710q3e4V9vL._AC_UL320_.jpg',44,4.5,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDMyNTU2MDA4MzU3NzE3OjE3MDMwMjA0MzU6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDExNzMzNzg1NzY5ODo6Mjo6&url=%2FPuxssul-OnePlus-Artificial-Ultra-Light-Protection%2Fdp%2FB0BPPJ3B5R%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0BPPJ3B5R%26pd_rd_r%3Dc6833ca7-9b03-4026-9582-6bd0013c9ed9%26pd_rd_w%3Difx0E%26pd_rd_wg%3DhC8sQ%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DWAJNVSCDP3AC2CAJYC32%26qid%3D1703020435%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:13:56.595129-06','2023-12-19 15:13:56.595129-06','www.amazon.com'),
+ (3872,'for OnePlus Nord N200 5G Case with HD Screen Protector with Slide Camera Cover, Atump 360° Rotation Ring Kickstand [Military Grade] Shockproof Protective Case for OnePlus Nord N200 5G,Black',NULL,'B0B214VLS8','https://m.media-amazon.com/images/I/81a-r8tw-fL._AC_UY218_.jpg',1048,4.3,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Protector-Rotation-Kickstand-Shockproof-Protective/dp/B0B214VLS8/ref=cs_sr_dp?keywords=oneplus+cases&qid=1703020435&sr=8-13',50,'2023-12-19 15:13:56.672653-06','2023-12-19 15:13:56.672653-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3864,'Aozuoton Oneplus Nord N200 5G Case: Military Grade 16ft Drop Tested, Ring Shockproof Protective Cover with HD Screen Protector, Blue',NULL,'B0B4FYJLST','https://m.media-amazon.com/images/I/61uS6xK-MEL._AC_UY218_.jpg',280,4.5,'$8.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDMyNTU2MDA4MzU3NzE3OjE3MDMwMjA0MzU6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA0OTY4NDU1MTAwMjo6Mzo6&url=%2FAozuoton-Oneplus-Nord-N200-5G%2Fdp%2FB0B4FYJLST%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0B4FYJLST%26pd_rd_r%3Dc6833ca7-9b03-4026-9582-6bd0013c9ed9%26pd_rd_w%3Difx0E%26pd_rd_wg%3DhC8sQ%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DWAJNVSCDP3AC2CAJYC32%26qid%3D1703020435%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:13:56.603278-06','2023-12-19 15:14:04.897794-06','www.amazon.com'),
+ (4577,'6000mah Ultra Slim Built in Cables Power Bank, Card Size Built in USB C Cords Battery Pack Portable Charger for Phones, 3 Output External Battery Pack Compatible with iPhone, Samsung, Google, Green',NULL,'B0BY8PDQV1','https://m.media-amazon.com/images/I/81heYm0AdHL._AC_UL320_.jpg',16618,4.3,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/6000mah-Battery-Portable-External-Compatible/dp/B0BY8PDQV1/ref=sr_1_80?keywords=travel+accessories&qid=1703020686&sr=8-80',57,'2023-12-19 15:18:08.022829-06','2023-12-19 15:18:08.022829-06','www.amazon.com'),
+ (3861,'TUDIA DualShield Grip Designed for OnePlus 11 Case 5G (2023), [MergeGrip] Dual Layer Shockproof Slim Military Grade Non-Slip Tough Heavy Duty Protective Phone Case Cover (Gray)',NULL,'B0BVT3V8MX','https://m.media-amazon.com/images/I/71JscUvnSUL._AC_UL320_.jpg',288,4.6,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMDMyNTU2MDA4MzU3NzE3OjE3MDMwMjA0MzU6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAwNTE3MTg3NzgwMjo6NDo6&url=%2FTUDIA-DualShield-MergeGrip-Shockproof-Protective%2Fdp%2FB0BVT3V8MX%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%253Aamzn1.sym.d17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0BVT3V8MX%26pd_rd_r%3Dc6833ca7-9b03-4026-9582-6bd0013c9ed9%26pd_rd_w%3Difx0E%26pd_rd_wg%3DhC8sQ%26pf_rd_p%3Dd17ca69f-1a39-4f7d-a62f-e5dff4cfd6d8%26pf_rd_r%3DWAJNVSCDP3AC2CAJYC32%26qid%3D1703020435%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-364cf978-ce2a-480a-9bb0-bdb96faa0f61-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:13:56.572151-06','2023-12-19 15:13:56.60999-06','www.amazon.com'),
+ (3865,'SKTGSLAMY for OnePlus Nord N200 5G Case,with Screen Protector,[Military Grade] 16ft. Drop Tested Cover with Magnetic Kickstand Car Mount Protective Case for OnePlus Nord N200 5G, Blue',NULL,'B09QRVS11D','https://m.media-amazon.com/images/I/712dwocppxL._AC_UY218_.jpg',1544,4.5,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SKTGSLAMY-Protector-Military-Kickstand-Protective/dp/B09QRVS11D/ref=cs_sr_dp_6?keywords=oneplus+cases&qid=1703020435&sr=8-6',50,'2023-12-19 15:13:56.616531-06','2023-12-19 15:13:56.616531-06','www.amazon.com'),
+ (3866,'kwmobile Case Compatible with OnePlus Nord N10 5G Case - TPU Silicone Phone Cover with Soft Finish - Green Tomato',NULL,'B09CD5KLDP','https://m.media-amazon.com/images/I/61Bw8te4s6L._AC_UY218_.jpg',628,4.4,'$9.09','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/kwmobile-Silicone-Case-Compatible-OnePlus/dp/B09CD5KLDP/ref=cs_sr_dp_n?keywords=oneplus+cases&qid=1703020435&sr=8-8',50,'2023-12-19 15:13:56.626047-06','2023-12-19 15:13:56.626047-06','www.amazon.com'),
+ (3867,'TJS Compatible for OnePlus Nord N30 5G Case, with Tempered Glass Screen Protector Dual Layer Hybrid (Magnetic Mount Friendly) Shockproof Drop Protection Impact Phone Case (Black)',NULL,'B0C7KG9HJK','https://m.media-amazon.com/images/I/61ewM8sPb0L._AC_UY218_.jpg',114,4.5,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TJS-Compatible-Protector-Shockproof-Protection/dp/B0C7KG9HJK/ref=cs_sr_dp_6?keywords=oneplus+cases&qid=1703020435&sr=8-9',50,'2023-12-19 15:13:56.633381-06','2023-12-19 15:13:56.633381-06','www.amazon.com'),
+ (3868,'Spigen Tough Armor Designed for OnePlus 7 Pro Case (2019) - Black',NULL,'B07RY67KWY','https://m.media-amazon.com/images/I/51R95YhL-IL._AC_UY218_.jpg',4139,4.7,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Tough-Armor-Designed-OnePlus/dp/B07RY67KWY/ref=sr_1_10?keywords=oneplus+cases&qid=1703020435&sr=8-10',50,'2023-12-19 15:13:56.64185-06','2023-12-19 15:13:56.64185-06','www.amazon.com'),
+ (3869,'Military Grade Drop Impact for Oneplus Nord N200 5G Case Oneplus Nord N200 5G Case 360 Metal Rotating Ring Kickstand Holder Armor Heavy Duty Shockproof Case for Oneplus Nord N200 5G Phone Case (Black)',NULL,'B09F71Y49P','https://m.media-amazon.com/images/I/71dBfjzf3NL._AC_UY218_.jpg',657,4.4,'$8.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Military-Oneplus-Rotating-Kickstand-Shockproof/dp/B09F71Y49P/ref=cs_sr_dp_6?keywords=oneplus+cases&qid=1703020435&sr=8-11',50,'2023-12-19 15:13:56.650042-06','2023-12-19 15:13:56.650042-06','www.amazon.com'),
+ (3870,'Encased Falcon Armor Designed for OnePlus Nord N20 5G Case, Heavy Duty Protection (Black)',NULL,'B0B3GGVHVN','https://m.media-amazon.com/images/I/81ytK20J7GL._AC_UY218_.jpg',3,4.3,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NDEzMTcyMjQ1OTE3MTc6MTcwMzAyMDQzNTpzcF9tdGY6MjAwMDYzMTkwNDQwODk4OjowOjo&url=%2FEncased-Falcon-Designed-OnePlus-Protection%2Fdp%2FB0B3GGVHVN%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020435%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',50,'2023-12-19 15:13:56.657501-06','2023-12-19 15:13:56.657501-06','www.amazon.com'),
+ (3871,'QUIETIP Case Compatible with OnePlus 10T 5G,Magnetic Thin Body Metal Frame Double Sided ClearTempered Glass Shockproof with Lens Camera Protector Cover,Green',NULL,'B0BBN1PF7J','https://aax-us-iad.amazon.com/e/loi/imp?b=JFc399QfDknO57TXNZLD5XgAAAGMg-2YggEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICBpghwe',45,3.0,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RFc399QfDknO57TXNZLD5XgAAAGMg-2YXAEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICBpghwe/https://www.amazon.com/QUIETIP-Compatible-10T-ClearTempered-Shockproof/dp/B0BBN1PF7J/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=oneplus+cases&keywords=oneplus+cases&pd_rd_i=B0BBN1PF7J&pd_rd_r=c6833ca7-9b03-4026-9582-6bd0013c9ed9&pd_rd_w=yu56w&pd_rd_wg=hC8sQ&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=WAJNVSCDP3AC2CAJYC32&qid=1703020435&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',50,'2023-12-19 15:13:56.665293-06','2023-12-19 15:13:56.665293-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3873,'kwmobile Case Compatible with OnePlus 7T Case - TPU Silicone Phone Cover with Soft Finish - Gray Green',NULL,'B08H7YPHCG','https://m.media-amazon.com/images/I/711byd7YcfL._AC_UY218_.jpg',1053,4.3,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/kwmobile-Silicone-Case-Compatible-OnePlus/dp/B08H7YPHCG/ref=cs_sr_dp_n?keywords=oneplus+cases&qid=1703020435&sr=8-14',50,'2023-12-19 15:13:56.678988-06','2023-12-19 15:13:56.678988-06','www.amazon.com'),
+ (3874,'ATUMP for OnePlus Nord N300 5G Case with HD Screen Protector, Heavy Duty Shockproof with 360° Rotation Metal Kickstand [Military Grade] Protective Case for OnePlus Nord N300 5G, Black',NULL,'B0BMVLP1NB','https://m.media-amazon.com/images/I/81PPbUWF8JL._AC_UY218_.jpg',123,4.1,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ATUMP-Protector-Shockproof-Kickstand-Protective/dp/B0BMVLP1NB/ref=cs_sr_dp?keywords=oneplus+cases&qid=1703020435&sr=8-15',50,'2023-12-19 15:13:56.686097-06','2023-12-19 15:13:56.686097-06','www.amazon.com'),
+ (3875,'Designed for OnePlus Open Case with Screen Protectors [Hard PC Leather Slim Phone Case] [Shockproof Anti-Slip] Slim Case for OnePlus Open 2023 (Black)',NULL,'B0CLSCMZRT','https://m.media-amazon.com/images/I/61exBA1mXwL._AC_UY218_.jpg',4,3.0,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OnePlus-Open-Case-Protectors-Shockproof/dp/B0CLSCMZRT/ref=cs_sr_dp_3?keywords=oneplus+cases&qid=1703020435&sr=8-16',50,'2023-12-19 15:13:56.694903-06','2023-12-19 15:13:56.694903-06','www.amazon.com'),
+ (3876,'KKEIKO Case for OnePlus Nord N200 5G, RFID Blocking PU Leather Wallet Case with Card Holder, Magnetic Flip Cover Compatible with OnePlus Nord N200 5G, Black',NULL,'B0CBFHS9PM','https://m.media-amazon.com/images/I/81ad82OCkdL._AC_UY218_.jpg',21,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NDEzMTcyMjQ1OTE3MTc6MTcwMzAyMDQzNTpzcF9tdGY6MzAwMDc1NjY2NTYxODAyOjowOjo&url=%2FKKEIKO-OnePlus-Blocking-Magnetic-Compatible%2Fdp%2FB0CBFHS9PM%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020435%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',50,'2023-12-19 15:13:56.701994-06','2023-12-19 15:13:56.701994-06','www.amazon.com'),
+ (3877,'Fit for OnePlus Nord N30 5G Case with Slide Camera Cover & Screen Protector (2 Pack), Build in 360° Rotating Ring Kickstand [Military Grade] Protective Case for Nord N30 5g Case, Black',NULL,'B0CJ2Y5CF5','https://m.media-amazon.com/images/I/81pzAxDntJL._AC_UY218_.jpg',294,4.5,'$7.68','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Protector-Rotating-Kickstand-Military-Protective/dp/B0CJ2Y5CF5/ref=cs_sr_dp_n?keywords=oneplus+cases&qid=1703020435&sr=8-18',50,'2023-12-19 15:13:56.709336-06','2023-12-19 15:13:56.709336-06','www.amazon.com'),
+ (3878,'Libeagle for Oneplus Open Case, Built-in Screen Protector, Full Hinge Protection, Metal Kickstand, Camera Protection, Thin & Slim Cover 5G 2023-Black',NULL,'B0CMQQRT86','https://m.media-amazon.com/images/I/61wSImWi9IL._AC_UY218_.jpg',7,4.8,'$28.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Libeagle-Protector-Protection-Kickstand-2023-Black/dp/B0CMQQRT86/ref=cs_sr_dp?keywords=oneplus+cases&qid=1703020435&sr=8-19',50,'2023-12-19 15:13:56.716364-06','2023-12-19 15:13:56.716364-06','www.amazon.com'),
+ (3879,'Poetic Guardian Case for OnePlus 11 5G 6.7" (2023) [20 FT Mil-Grade Drop Tested], Full-Body Hybrid Shockproof Bumper Cover with Built-in Screen Protector, Pink/Clear',NULL,'B0BX2KBYWZ','https://m.media-amazon.com/images/I/71pld6AXwfL._AC_UY218_.jpg',153,4.2,'$19.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Poetic-Mil-Grade-Full-Body-Shockproof-Protector/dp/B0BX2KBYWZ/ref=cs_sr_dp_4?keywords=oneplus+cases&qid=1703020435&sr=8-20',50,'2023-12-19 15:13:56.72426-06','2023-12-19 15:13:56.72426-06','www.amazon.com'),
+ (3880,'BENTOBEN OnePlus Nord N10 5G Case, Slim Fit Glow in The Dark Hybrid Hard PC Soft TPU Bumper Drop Proof Protective Girls Women Boys Men Cover for One Plus Nord N10 5G 6.49 Inch 2020, Nebula/Galaxy',NULL,'B08YYD8VFB','https://m.media-amazon.com/images/I/81fW8JCyA3L._AC_UY218_.jpg',400,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BENTOBEN-OnePlus-Hybrid-Bumper-Protective/dp/B08YYD8VFB/ref=sr_1_21?keywords=oneplus+cases&qid=1703020435&sr=8-21',50,'2023-12-19 15:13:56.730932-06','2023-12-19 15:13:56.730932-06','www.amazon.com'),
+ (3881,'Puxssul for OnePlus 10T Case 5G, Soft TPU Artificial Leather case,Extremely Light Ultra-Light Camera Protection Leather Cover Case for OnePlus 10T 5G. (White)',NULL,'B0CC96TJ8S','https://m.media-amazon.com/images/I/71wI81jTEtL._AC_UY218_.jpg',44,4.5,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NDEzMTcyMjQ1OTE3MTc6MTcwMzAyMDQzNTpzcF9idGY6MzAwMDI1NDg5NDA1MjAyOjowOjo&url=%2FPuxssul-OnePlus-Artificial-Ultra-Light-Protection%2Fdp%2FB0CC96TJ8S%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020435%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',50,'2023-12-19 15:13:56.740415-06','2023-12-19 15:13:56.740415-06','www.amazon.com'),
+ (3894,'YQODSZ for OnePlus Open Case with Hinge Protection, [Built in Screen Protector] [Camera Protector] All-Inclusive OnePlus Open Phone Case Slim Hard PC OnePlus Open Kickstand Case Green',NULL,'B0CMR4G65H','https://m.media-amazon.com/images/I/51mnNjTvZ8L._AC_UY218_.jpg',9,4.3,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/YQODSZ-OnePlus-Open-Case-Kickstand/dp/B0CMR4G65H/ref=cs_sr_dp_3?keywords=oneplus+cases&qid=1703020444&sr=8-24',50,'2023-12-19 15:14:04.95606-06','2023-12-19 15:14:04.95606-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4042,'Dockers',NULL,'B0B2FGCBR9','https://m.media-amazon.com/images/I/519qYsZeYtL._AC_UL320_.jpg',504,4.5,'$24.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dockers-Ferris-Loafer-4-Way-Stretch/dp/B0B2FGCBR9/ref=sr_1_32?keywords=men%27s+shoes&qid=1703020483&sr=8-32',53,'2023-12-19 15:14:44.941263-06','2023-12-19 15:14:44.941263-06','www.amazon.com'),
+ (3882,'QUIETIP Case Compatible OnePlus 11 5G,Magnetic Body Metal Frame Double Sided Clear Tempered Glass Shockproof with Camera Protection Cover Thin,Green',NULL,'B0BT54QHDP','https://aax-us-iad.amazon.com/e/loi/imp?b=JEoyWeLVvuRPGgczgiasDNAAAAGMg-2YnQEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICA2CeOx',92,2.5,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/REoyWeLVvuRPGgczgiasDNAAAAGMg-2YcgEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICA2CeOx/https://www.amazon.com/QUIETIP-Compatible-Magnetic-Shockproof-Protection/dp/B0BT54QHDP/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b%3Aamzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&cv_ct_cx=oneplus+cases&keywords=oneplus+cases&pd_rd_i=B0BT54QHDP&pd_rd_r=13fac63b-fc53-4251-a070-0894a73aee9d&pd_rd_w=kaIvp&pd_rd_wg=zakIO&pf_rd_p=e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&pf_rd_r=WAJNVSCDP3AC2CAJYC32&qid=1703020435&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-a61ee601-6e56-4862-a8a2-1d3da5a5406f',50,'2023-12-19 15:13:56.747362-06','2023-12-19 15:13:56.747362-06','www.amazon.comhttps:'),
+ (3883,'KKEIKO Case for OnePlus 8T, RFID Blocking PU Leather Wallet Case with Card Holder, Magnetic Flip Cover Compatible with OnePlus 8T, Black',NULL,'B0CBFFDPRN','https://m.media-amazon.com/images/I/81Q6bwbcKmL._AC_UY218_.jpg',21,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMzgzODg3MDg4OTg2NzE3OjE3MDMwMjA0NDQ6c3BfYXRmX25leHQ6MzAwMDc1NzAwMTI5NDAyOjowOjo&url=%2FKKEIKO-OnePlus-Blocking-Magnetic-Compatible%2Fdp%2FB0CBFFDPRN%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020444%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',50,'2023-12-19 15:14:04.856391-06','2023-12-19 15:14:04.856391-06','www.amazon.com'),
+ (3884,'NZND Compatible with OnePlus Nord N300 5G Case with Tempered Glass Screen Protector (Maximum Coverage), Full-Body Protective [Military-Grade], Magnetic Car Ring Holder Cover Case (Green)',NULL,'B0CCQ885YS','https://m.media-amazon.com/images/I/81OJYF4uCHL._AC_UY218_.jpg',6,5.0,'$9.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMzgzODg3MDg4OTg2NzE3OjE3MDMwMjA0NDQ6c3BfYXRmX25leHQ6MzAwMDYyMDAzMTI2OTAyOjowOjo&url=%2FNZND-Compatible-Protector-Protective-Military-Grade%2Fdp%2FB0CCQ885YS%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020444%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',50,'2023-12-19 15:14:04.875815-06','2023-12-19 15:14:04.875815-06','www.amazon.com'),
+ (3885,'Spigen Ultra Hybrid Designed for OnePlus Nord Case (2020) - Matte Black',NULL,'B083G84HMW','https://m.media-amazon.com/images/I/61QmuOcW4KL._AC_UY218_.jpg',3619,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Ultra-Hybrid-Designed-OnePlus/dp/B083G84HMW/ref=sr_1_19?keywords=oneplus+cases&qid=1703020444&sr=8-19',50,'2023-12-19 15:14:04.883206-06','2023-12-19 15:14:04.883206-06','www.amazon.com'),
+ (3886,'Poetic Guardian Series Case Designed for OnePlus Nord N100, Full-Body Hybrid Shockproof Bumper Cover with Built-in-Screen Protector, Pink/Clear',NULL,'B08ZRWRP59','https://m.media-amazon.com/images/I/71AgwY3vp3L._AC_UY218_.jpg',635,4.6,'$12.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Poetic-Guardian-Full-Body-Shockproof-Protector/dp/B08ZRWRP59/ref=cs_sr_dp_2?keywords=oneplus+cases&qid=1703020444&sr=8-20',50,'2023-12-19 15:14:04.890431-06','2023-12-19 15:14:04.890431-06','www.amazon.com'),
+ (4525,'6 Set Packing Cubes for Travel, OlarHike 4 Various Sizes(Large,Medium,Small,Slim) Luggage Organizer Bags for Travel Accessories Travel Essentials, Travel Cubes for Carry on Suitcases (Grey)',NULL,'B09HGTL2RY','https://m.media-amazon.com/images/I/812vi81y4BL._AC_UL320_.jpg',4310,4.7,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjIwMDA2OTYzMTI2Mjk5ODo6MDo6&url=%2FOlarHike-Organizer-Accessories-Essentials-Suitcases%2Fdp%2FB09HGTL2RY%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.583318-06','2023-12-19 15:18:08.028284-06','www.amazon.com'),
+ (3888,'Puxssul for OnePlus 10T Case 5G, Soft TPU Artificial Leather case,Extremely Light Ultra-Light Camera Protection Leather Cover Case for OnePlus 10T 5G.(Violet)',NULL,'B0CMHRJ6Y2','https://m.media-amazon.com/images/I/71ekyrKYLnL._AC_UL320_.jpg',44,4.5,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDk3Njk5NzY5NDYyNzE3OjE3MDMwMjA0NDQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDEwMDg1NjkzMTYwMjo6MDo6&url=%2FPuxssul-OnePlus-Artificial-Ultra-Light-Protection%2Fdp%2FB0CMHRJ6Y2%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0CMHRJ6Y2%26pd_rd_r%3D6c6b9626-0532-4430-b6ef-48f3cb49aff4%26pd_rd_w%3DT9Ezp%26pd_rd_wg%3DWUatq%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9HXSM3344E4DY8FKFQAX%26qid%3D1703020444%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-17-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:14:04.911832-06','2023-12-19 15:14:04.911832-06','www.amazon.com'),
+ (4043,'ASICS',NULL,'B09NBT4PXS','https://m.media-amazon.com/images/I/6114sOCgomL._AC_UL320_.jpg',2232,4.5,'$44.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Gel-ExciteTM-Running-Drive-White/dp/B09NBT4PXS/ref=sr_1_33?keywords=men%27s+shoes&qid=1703020483&sr=8-33',53,'2023-12-19 15:14:44.947962-06','2023-12-19 15:14:44.947962-06','www.amazon.com'),
+ (3889,'Suordii for OnePlus Nord N300 5G Case with Screen Protector [2 Pack], Shockproof Protective Case with Slide Camera Cover, Built-in 360° Rotate Ring Kickstand for OnePlus Nord N300 5G - Red',NULL,'B0BLY1SJGW','https://m.media-amazon.com/images/I/71pjKA+OtmL._AC_UL320_.jpg',20,4.0,'$12.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDk3Njk5NzY5NDYyNzE3OjE3MDMwMjA0NDQ6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE2NDU2MTA5Njk5ODo6MTo6&url=%2FSuordii-Protector-Shockproof-Protective-Kickstand%2Fdp%2FB0BLY1SJGW%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0BLY1SJGW%26pd_rd_r%3D6c6b9626-0532-4430-b6ef-48f3cb49aff4%26pd_rd_w%3DT9Ezp%26pd_rd_wg%3DWUatq%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9HXSM3344E4DY8FKFQAX%26qid%3D1703020444%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-18-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:14:04.918398-06','2023-12-19 15:14:04.918398-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3890,'TUDIA DualShield Grip Designed for OnePlus Nord N30 5G Case (2023), [MergeGrip] Dual Layer Shockproof Slim Military Grade Non-Slip Tough Heavy Duty Protective Phone Case Cover (Pine Green)',NULL,'B0CDG4YH59','https://m.media-amazon.com/images/I/71+4dePBo4L._AC_UL320_.jpg',19,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDk3Njk5NzY5NDYyNzE3OjE3MDMwMjA0NDQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5NjM5Mjk2MDAwMjo6Mjo6&url=%2FTUDIA-DualShield-MergeGrip-Shockproof-Protective%2Fdp%2FB0CDG4YH59%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0CDG4YH59%26pd_rd_r%3D6c6b9626-0532-4430-b6ef-48f3cb49aff4%26pd_rd_w%3DT9Ezp%26pd_rd_wg%3DWUatq%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9HXSM3344E4DY8FKFQAX%26qid%3D1703020444%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-19-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:14:04.92477-06','2023-12-19 15:14:04.92477-06','www.amazon.com'),
+ (3891,'Case for OnePlus 11 5G Phone Case Hide Telescopic Folding with Ring Kickstand Shockproof Protective Cover ,with 1pcs Screen Protector Reinforced Corners TPU Blue',NULL,'B0CCRGQ1Z7','https://m.media-amazon.com/images/I/61gahnDDvZL._AC_UL320_.jpg',43,4.2,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDk3Njk5NzY5NDYyNzE3OjE3MDMwMjA0NDQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAzNTA0NTg2NTIwMjo6Mzo6&url=%2FTelescopic-Kickstand-Shockproof-Protective-Reinforced%2Fdp%2FB0CCRGQ1Z7%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0CCRGQ1Z7%26pd_rd_r%3D6c6b9626-0532-4430-b6ef-48f3cb49aff4%26pd_rd_w%3DT9Ezp%26pd_rd_wg%3DWUatq%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9HXSM3344E4DY8FKFQAX%26qid%3D1703020444%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-20-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:14:04.930732-06','2023-12-19 15:14:04.930732-06','www.amazon.com'),
+ (3887,'AKINIK for OnePlus Nord N200 5G Case with Slide Camera Cover and 2pcs HD Screen Protector, 360° Rotation Ring Kickstand [Military Grade] Case for OnePlus Nord N200 5G (Red)',NULL,'B0C84XKDHC','https://m.media-amazon.com/images/I/81Vs-B93ALL._AC_UL320_.jpg',16,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDk3Njk5NzY5NDYyNzE3OjE3MDMwMjA0NDQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAxOTExOTU1NzYwMjo6NDo6&url=%2FAKINIK-OnePlus-Nord-N200-Case%2Fdp%2FB0C84XKDHC%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Doneplus%2Bcases%26keywords%3Doneplus%2Bcases%26pd_rd_i%3DB0C84XKDHC%26pd_rd_r%3D6c6b9626-0532-4430-b6ef-48f3cb49aff4%26pd_rd_w%3DT9Ezp%26pd_rd_wg%3DWUatq%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9HXSM3344E4DY8FKFQAX%26qid%3D1703020444%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-21-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',50,'2023-12-19 15:14:04.905348-06','2023-12-19 15:14:04.937959-06','www.amazon.com'),
+ (3892,'TUDIA DualShield Grip Designed for OnePlus 11 Case 5G (2023), [MergeGrip] Dual Layer Shockproof Slim Military Grade Non-Slip Tough Heavy Duty Protective Phone Case Cover (Gray)',NULL,'B0BVTHVYL6','https://m.media-amazon.com/images/I/71JscUvnSUL._AC_UY218_.jpg',288,4.6,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TUDIA-DualShield-MergeGrip-Shockproof-Protective/dp/B0BVTHVYL6/ref=cs_sr_dp_6?keywords=oneplus+cases&qid=1703020444&sr=8-22',50,'2023-12-19 15:14:04.944226-06','2023-12-19 15:14:04.944226-06','www.amazon.com'),
+ (3893,'for OnePlus Nord N20 5G Case with HD Screen Protector, Heavy Duty Shockproof Protective Case with Metal Kickstand [Military Grade] Protective Case for OnePlus Nord N20 5G, Black',NULL,'B0BCGHGZY9','https://m.media-amazon.com/images/I/81XSbeZPFLL._AC_UY218_.jpg',479,4.4,'$9.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ATUMP-Protector-Shockproof-Protective-Kickstand/dp/B0BCGHGZY9/ref=cs_sr_dp?keywords=oneplus+cases&qid=1703020444&sr=8-23',50,'2023-12-19 15:14:04.949989-06','2023-12-19 15:14:04.949989-06','www.amazon.com'),
+ (4044,'Skechers',NULL,'B07J576K61','https://m.media-amazon.com/images/I/91CurXTesTL._AC_UL320_.jpg',12002,4.4,'$75.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Moreno-Canvas-Oxford-Beige/dp/B07J576K61/ref=sr_1_34?keywords=men%27s+shoes&qid=1703020483&sr=8-34',53,'2023-12-19 15:14:44.956436-06','2023-12-19 15:14:44.956436-06','www.amazon.com'),
+ (3895,'for Oneplus Nord N20 5G Case with Tempered Glass Screen Protector [2 Pack] Military Grade Heavy Duty Full Body Durable Oneplus N20 5G Case with Built In 360°Adjustable Metal Ring Kickstand -SKY BLUE',NULL,'B0B244J99Z','https://m.media-amazon.com/images/I/71q9UPoLhDL._AC_UY218_.jpg',96,4.3,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Tempered-Protector-Military-360%C2%B0Adjustable-Kickstand/dp/B0B244J99Z/ref=cs_sr_dp_4?keywords=oneplus+cases&qid=1703020444&sr=8-25',50,'2023-12-19 15:14:04.962114-06','2023-12-19 15:14:04.962114-06','www.amazon.com'),
+ (3896,'Spigen Liquid Air Armor Designed for OnePlus 11 Case (2023) - Matte Black',NULL,'B0BJ8H232L','https://m.media-amazon.com/images/I/71bHgHSfhpL._AC_UY218_.jpg',269,4.1,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Liquid-Armor-Designed-OnePlus/dp/B0BJ8H232L/ref=sr_1_26?keywords=oneplus+cases&qid=1703020444&sr=8-26',50,'2023-12-19 15:14:04.968352-06','2023-12-19 15:14:04.968352-06','www.amazon.com'),
+ (3897,'NZND Case for OnePlus Nord N30 5G / Nord CE 3 Lite 5G with Tempered Glass Screen Protector (Maximum Coverage), Full-Body Protective [Military-Grade], Magnetic Car Ring Holder Cover Case (Green)',NULL,'B0C8L17DR1','https://m.media-amazon.com/images/I/81khmEzhjxL._AC_UY218_.jpg',40,4.2,'$8.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMzgzODg3MDg4OTg2NzE3OjE3MDMwMjA0NDQ6c3BfbXRmOjMwMDAwMzczMzg0MjEwMjo6MDo6&url=%2FNZND-Protector-Full-Body-Protective-Military-Grade%2Fdp%2FB0C8L17DR1%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020444%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',50,'2023-12-19 15:14:04.975237-06','2023-12-19 15:14:04.975237-06','www.amazon.com'),
+ (3898,'Cresee Case for OnePlus 11 5G, Thin Clear Cover with Camera Protection Slim Shockproof Flexible TPU Phone Case for OnePlus 11 - Transparent',NULL,'B0BVFTJ61C','https://m.media-amazon.com/images/I/7152lH6+tPL._AC_UY218_.jpg',128,4.4,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cresee-OnePlus-Protection-Shockproof-Flexible/dp/B0BVFTJ61C/ref=cs_sr_dp_3?keywords=oneplus+cases&qid=1703020444&sr=8-29',50,'2023-12-19 15:14:04.981496-06','2023-12-19 15:14:04.981496-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3899,'ExoGuard for OnePlus Nord N200 5G Case, Rubber Shockproof Full-Body Cover Case Built-in Screen Protector and Kickstand Compatible with OnePlus Nord N200 Phone (Red)',NULL,'B096DX1CJR','https://m.media-amazon.com/images/I/71bTCiM-evS._AC_UY218_.jpg',592,4.4,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ExoGuard-Shockproof-Full-Body-Protector-Compatible/dp/B096DX1CJR/ref=cs_sr_dp?keywords=oneplus+cases&qid=1703020444&sr=8-30',50,'2023-12-19 15:14:04.988313-06','2023-12-19 15:14:04.988313-06','www.amazon.com'),
+ (3900,'Poetic Revolution Series Case for OnePlus Nord N10 5G, Full-Body Rugged Dual-Layer Shockproof Protective Cover with Kickstand and Built-in-Screen Protector, Black',NULL,'B08TH7C5CB','https://m.media-amazon.com/images/I/814-jzazT8L._AC_UY218_.jpg',1843,4.6,'$18.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Poetic-Revolution-Dual-Layer-Shockproof-Protective/dp/B08TH7C5CB/ref=sr_1_31?keywords=oneplus+cases&qid=1703020444&sr=8-31',50,'2023-12-19 15:14:04.995403-06','2023-12-19 15:14:04.995403-06','www.amazon.com'),
+ (3901,'seacosmo Case for OnePlus Nord N10 5G, Full Body Shockproof Cover [with Built-in Screen Protector] Slim Fit Bumper Protective Case for 1+ Nord N10 5G, Black/Clear',NULL,'B09268WXGW','https://m.media-amazon.com/images/I/61cE2vzBkIL._AC_UY218_.jpg',487,4.1,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/seacosmo-OnePlus-Shockproof-Protector-Protective/dp/B09268WXGW/ref=sr_1_32?keywords=oneplus+cases&qid=1703020444&sr=8-32',50,'2023-12-19 15:14:05.001644-06','2023-12-19 15:14:05.001644-06','www.amazon.com'),
+ (3902,'YQODSZ for OnePlus Open Case with Magnetic Hinge Protection, [Built in Screen Protector] [Camera Protector] All-Inclusive OnePlus Open Phone Case Slim Hard PC OnePlus Open Kickstand Case Black',NULL,'B0CN77MRDL','https://m.media-amazon.com/images/I/51ozpnUtvKL._AC_UY218_.jpg',3,4.6,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/YQODSZ-OnePlus-Open-Case-Kickstand/dp/B0CN77MRDL/ref=cs_sr_dp_3?keywords=oneplus+cases&qid=1703020444&sr=8-33',50,'2023-12-19 15:14:05.008811-06','2023-12-19 15:14:05.008811-06','www.amazon.com'),
+ (3903,'Dretal for OnePlus Nord N300 5G Case + Tempered Glass Screen Protector with Kickstand & Slide Lens Protector Cover,Heavy Duty Armor Shockproof Rugged Military Grade Protective Case(Black',NULL,'B0BKQ3JGN4','https://m.media-amazon.com/images/I/710c92D+azL._AC_UY218_.jpg',193,4.2,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Tempered-Protector-Kickstand-Shockproof-Protective/dp/B0BKQ3JGN4/ref=cs_sr_dp_3?keywords=oneplus+cases&qid=1703020444&sr=8-34',50,'2023-12-19 15:14:05.014656-06','2023-12-19 15:14:05.014656-06','www.amazon.com'),
+ (4045,'Skechers',NULL,'B07YQNQJ73','https://m.media-amazon.com/images/I/81C5ohx8YyL._AC_UL320_.jpg',4711,4.6,'$28.77','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-mens-Walk-Max-Clinched/dp/B07YQNQJ73/ref=sr_1_35?keywords=men%27s+shoes&qid=1703020483&sr=8-35',53,'2023-12-19 15:14:44.967255-06','2023-12-19 15:14:44.967255-06','www.amazon.com'),
+ (3904,'Poetic Revolution Series Case for Oneplus Nord N200 5G, Full-Body Rugged Dual-Layer Shockproof Protective Cover with Kickstand and Built-in Screen Protector, Black',NULL,'B099DP59W5','https://m.media-amazon.com/images/I/71AIv6B5HhL._AC_UY218_.jpg',515,4.6,'$17.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Poetic-Revolution-Dual-Layer-Shockproof-Protective/dp/B099DP59W5/ref=cs_sr_dp_2?keywords=oneplus+cases&qid=1703020444&sr=8-35',50,'2023-12-19 15:14:05.022296-06','2023-12-19 15:14:05.022296-06','www.amazon.com'),
+ (3905,'seacosmo Case for Oneplus Nord N100, Full Body Shockproof Cover with Built-in Screen Protector, Slim Fit Bumper Protective Case for 1+ Nord N100- Black/Clear',NULL,'B096ZJSQGQ','https://m.media-amazon.com/images/I/71qundVQL-L._AC_UY218_.jpg',286,4.4,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/seacosmo-Oneplus-Shockproof-Protector-Protective/dp/B096ZJSQGQ/ref=sr_1_36?keywords=oneplus+cases&qid=1703020444&sr=8-36',50,'2023-12-19 15:14:05.02893-06','2023-12-19 15:14:05.02893-06','www.amazon.com'),
+ (3906,'Encased DuraClip Designed for OnePlus Nord N20 5G Belt Case - Slim Phone Cover with Kickstand and Holster Clip (Black)',NULL,'B0B3GKT8J6','https://m.media-amazon.com/images/I/81NtUVHaK3L._AC_UY218_.jpg',27,4.2,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMzgzODg3MDg4OTg2NzE3OjE3MDMwMjA0NDQ6c3BfYnRmOjIwMDA2MzIxODkwNzI5ODo6MDo6&url=%2FEncased-DuraClip-Designed-OnePlus-Nord%2Fdp%2FB0B3GKT8J6%2Fref%3Dsr_1_37_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020444%26sr%3D8-37-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',50,'2023-12-19 15:14:05.034945-06','2023-12-19 15:14:05.034945-06','www.amazon.com'),
+ (3907,'TUDIA DualShield Grip Designed for OnePlus Nord N30 5G Case (2023), [MergeGrip] Dual Layer Shockproof Slim Military Grade Non-Slip Tough Heavy Duty Protective Phone Case Cover (Matte Black)',NULL,'B0CDG8P143','https://m.media-amazon.com/images/I/71ybgHRgboL._AC_UY218_.jpg',19,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxMzgzODg3MDg4OTg2NzE3OjE3MDMwMjA0NDQ6c3BfYnRmOjMwMDA5NjM5Mjk1OTkwMjo6MDo6&url=%2FTUDIA-DualShield-MergeGrip-Shockproof-Protective%2Fdp%2FB0CDG8P143%2Fref%3Dsr_1_38_sspa%3Fkeywords%3Doneplus%2Bcases%26qid%3D1703020444%26sr%3D8-38-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',50,'2023-12-19 15:14:05.042099-06','2023-12-19 15:14:05.042099-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3908,'OnePlus 7 Pro Case Military Protection with Built-in 360 Rotation Kickstand Support Car Magnetic Holder for OnePlus 7 Pro 6.67" Blue',NULL,'B08FB3SPWC','https://aax-us-iad.amazon.com/e/loi/imp?b=JN9r_mCVB0xJNcwifKnqCusAAAGMg-254AEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICDRCMnR',610,4.2,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RN9r_mCVB0xJNcwifKnqCusAAAGMg-25sAEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICDRCMnR/https://www.amazon.com/Military-Protection-Rotation-Kickstand-Magnetic/dp/B08FB3SPWC/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=oneplus+cases&keywords=oneplus+cases&pd_rd_i=B08FB3SPWC&pd_rd_r=8213246f-c011-49fb-b2e9-5757b3861542&pd_rd_w=fcCLq&pd_rd_wg=XtXle&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=9HXSM3344E4DY8FKFQAX&qid=1703020444&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-17-48f7baba-8e26-45f3-8811-e1a601ad20bf',50,'2023-12-19 15:14:05.048764-06','2023-12-19 15:14:05.048764-06','www.amazon.comhttps:'),
+ (3909,'i-Blason Armorbox Series for Google Pixel 8 Pro Case with Kickstand & Belt Clip, Full-Body Rugged Anti-Slip Bumper Case with Built-in Screen Protector [Support Fingerprint ID] (Black)',NULL,'B0CKWVZ6YT','https://m.media-amazon.com/images/I/81oKeRE2KBL._AC_UY218_.jpg',6,4.6,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2ODc2NTc4ODk3NzI0NzE3OjE3MDMwMjA0NTA6c3BfYXRmOjMwMDA4MjkxOTI4MDkwMjo6MDo6&url=%2Fi-Blason-Kickstand-Full-Body-Anti-Slip-Fingerprint%2Fdp%2FB0CKWVZ6YT%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020450%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',51,'2023-12-19 15:14:11.675448-06','2023-12-19 15:14:11.675448-06','www.amazon.com'),
+ (3910,'ZZXX Google Pixel 8 Wallet Case with [RFID Blocking] Card Slot Kickstand Magnetic Closure Leather Flip Fold Protective Phone Case for Google Pixel 8 Case Wallet(Grey-6.3 inch)',NULL,'B0C6QD1P7M','https://m.media-amazon.com/images/I/91twC0ZppoL._AC_UY218_.jpg',2,5.0,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2ODc2NTc4ODk3NzI0NzE3OjE3MDMwMjA0NTA6c3BfYXRmOjMwMDA5MDA2MDUxNDYwMjo6MDo6&url=%2FZZXX-Google-Pixel-Kickstand-Protective%2Fdp%2FB0C6QD1P7M%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020450%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',51,'2023-12-19 15:14:11.684038-06','2023-12-19 15:14:11.684038-06','www.amazon.com'),
+ (3911,'Humixx for Google Pixel 8 Pro Case [Military Grade Drop Tested] [Ultimate Silky Touch] Shockproof Anti-Fingerprints Translucent Matte Hard Back Protective Slim Phone Case for Pixel 8 Pro 6.7” Black',NULL,'B0CGTQLSQ6','https://m.media-amazon.com/images/I/61358P92fyL._AC_UY218_.jpg',99,4.5,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Humixx-Google-Pixel-Pro-Anti-Fingerprints/dp/B0CGTQLSQ6/ref=sr_1_3?keywords=pixel+cases&qid=1703020450&sr=8-3',51,'2023-12-19 15:14:11.690587-06','2023-12-19 15:14:11.690587-06','www.amazon.com'),
+ (3912,'GONEZ Compatible with Google Pixel 8 Case, Liquid Silicone Case with 2x Screen Protectors, Full Body Protective Cover, Shockproof, Slim Phone Case, Anti-Scratch Soft Microfiber Lining 6.2", Stone/Gray',NULL,'B0CJ2K7SDG','https://m.media-amazon.com/images/I/61Q4q+CaLmL._AC_UY218_.jpg',53,4.1,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GONEZ-Compatible-Protectors-Protective-Anti-Scratch/dp/B0CJ2K7SDG/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020450&sr=8-4',51,'2023-12-19 15:14:11.69812-06','2023-12-19 15:14:11.69812-06','www.amazon.com'),
+ (3913,'Oterkin for Google Pixel 8 Case Clear, [20X Anti-Yellowing] Pixel 8 Case with [2Pcs Tempered Glass Screen Protector][Built-in 4 Airbags][10FT Military Protection] Google Pixel 8 Phone Case (Clear)',NULL,'B0CL986N8B','https://m.media-amazon.com/images/I/71NJgSaTAYL._AC_UY218_.jpg',162,4.3,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oterkin-Pixel-Case-Anti-Yellowing-Protection/dp/B0CL986N8B/ref=cs_sr_dp_6?keywords=pixel+cases&qid=1703020450&sr=8-5',51,'2023-12-19 15:14:11.707117-06','2023-12-19 15:14:11.707117-06','www.amazon.com'),
+ (4578,'Orzly Carry Case Compatible with Nintendo Switch and New Switch OLED Console - Black Protective Hard Portable Travel Carry Case Shell Pouch with Pockets for Accessories and Games',NULL,'B01NAUKS62','https://m.media-amazon.com/images/I/71oOxt0LKiL._AC_UL320_.jpg',62129,4.7,'$23.91','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Orzly-Carry-Case-Compatible-Nintendo-Switch/dp/B01NAUKS62/ref=sr_1_82?keywords=travel+accessories&qid=1703020686&sr=8-82',57,'2023-12-19 15:18:08.035122-06','2023-12-19 15:18:08.035122-06','www.amazon.com'),
+ (3915,'Poetic Guardian Series Case Designed for Google Pixel 7 5G with Built-in Screen Protector, Work with Fingerprint ID, Full Body Hybrid Shockproof Rugged Cover Case, Black/Clear',NULL,'B0BJTYGQS2','https://m.media-amazon.com/images/I/61xgM0DYpoL._AC_UL320_.jpg',176,4.5,'$16.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTY5MzE3MTM2NTA0NzE3OjE3MDMwMjA0NTA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDEwMzU1NzMyMzQ5ODo6MDo6&url=%2FPoetic-Guardian-Protector-Fingerprint-Shockproof%2Fdp%2FB0BJTYGQS2%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0BJTYGQS2%26pd_rd_r%3D7dfa77b4-d6a2-4e7e-8dc8-82026c4a4918%26pd_rd_w%3DFKcEv%26pd_rd_wg%3DwuA3W%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DVP3B92DK8NDND9JNRB2D%26qid%3D1703020450%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:11.720082-06','2023-12-19 15:14:11.720082-06','www.amazon.com'),
+ (3916,'i-Blason Cosmo Series Case for Google Pixel 6a (2022 Release), Slim Full-Body Stylish Protective Case with Built-in Screen Protector (Marble)',NULL,'B0B9LZQQYP','https://m.media-amazon.com/images/I/71zbL8NzOhL._AC_UL320_.jpg',139,4.4,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTY5MzE3MTM2NTA0NzE3OjE3MDMwMjA0NTA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5MzI1Mjg3NTA5ODo6MTo6&url=%2Fi-Blason-Release-Full-Body-Protective-Protector%2Fdp%2FB0B9LZQQYP%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0B9LZQQYP%26pd_rd_r%3D7dfa77b4-d6a2-4e7e-8dc8-82026c4a4918%26pd_rd_w%3DFKcEv%26pd_rd_wg%3DwuA3W%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DVP3B92DK8NDND9JNRB2D%26qid%3D1703020450%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:11.72679-06','2023-12-19 15:14:11.72679-06','www.amazon.com'),
+ (3917,'i-Blason Cosmo Series for Google Pixel 7 Pro Case (2022), Slim Full-Body Stylish Protective Case with Built-in Screen Protector (Ocean)',NULL,'B0BDFCGNC7','https://m.media-amazon.com/images/I/81YGa786I+L._AC_UL320_.jpg',570,4.5,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTY5MzE3MTM2NTA0NzE3OjE3MDMwMjA0NTA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5NjM1OTc0MjQ5ODo6Mjo6&url=%2Fi-Blason-Full-Body-Stylish-Protective-Protector%2Fdp%2FB0BDFCGNC7%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0BDFCGNC7%26pd_rd_r%3D7dfa77b4-d6a2-4e7e-8dc8-82026c4a4918%26pd_rd_w%3DFKcEv%26pd_rd_wg%3DwuA3W%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DVP3B92DK8NDND9JNRB2D%26qid%3D1703020450%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:11.734288-06','2023-12-19 15:14:11.734288-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4046,'adidas',NULL,'B09VCHRRV8','https://m.media-amazon.com/images/I/71rLqRMkt0L._AC_UL320_.jpg',429,4.2,'$99.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Terrex-Sneaker-Black-Carbon/dp/B09VCHRRV8/ref=sr_1_36?keywords=men%27s+shoes&qid=1703020483&sr=8-36',53,'2023-12-19 15:14:44.975197-06','2023-12-19 15:14:44.975197-06','www.amazon.com'),
+ (4579,'Rightline Gear Range Jr Weatherproof Rooftop Cargo Carrier for Top of Vehicle, Attaches With or Without Roof Rack, 10 Cubic Feet, Black',NULL,'B0006IEH78','https://m.media-amazon.com/images/I/81Z7YS7cFHL._AC_UL320_.jpg',563,4.3,'$69.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rightline-Gear-100R50-Range-Carrier/dp/B0006IEH78/ref=sr_1_83?keywords=travel+accessories&qid=1703020686&sr=8-83',57,'2023-12-19 15:18:08.041378-06','2023-12-19 15:18:08.041378-06','www.amazon.com'),
+ (3918,'i-Blason Cosmo Series for Google Pixel 7 Case (2022), Slim Full-Body Stylish Protective Case with Built-in Screen Protector (Marble)',NULL,'B0BD6JCNSV','https://m.media-amazon.com/images/I/71jyu0LcK0L._AC_UL320_.jpg',318,4.5,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTY5MzE3MTM2NTA0NzE3OjE3MDMwMjA0NTA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5NjM2NzY5NTQ5ODo6Mzo6&url=%2Fi-Blason-Full-Body-Stylish-Protective-Protector%2Fdp%2FB0BD6JCNSV%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0BD6JCNSV%26pd_rd_r%3D7dfa77b4-d6a2-4e7e-8dc8-82026c4a4918%26pd_rd_w%3DFKcEv%26pd_rd_wg%3DwuA3W%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DVP3B92DK8NDND9JNRB2D%26qid%3D1703020450%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:11.74111-06','2023-12-19 15:14:11.74111-06','www.amazon.com'),
+ (3914,'SUPCASE Unicorn Beetle Pro Series Case for Google Pixel 7 Pro (2022 Release), Full-Body Rugged Belt-Clip & Kickstand Case with Built-in Screen Protector (Black)',NULL,'B0B4VLHLB1','https://m.media-amazon.com/images/I/71DxptxK3FL._AC_UL320_.jpg',850,4.3,'$24.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMTY5MzE3MTM2NTA0NzE3OjE3MDMwMjA0NTA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5MzA5OTY2NzQ5ODo6NDo6&url=%2FSUPCASE-Full-Body-Belt-Clip-Kickstand-Protector%2Fdp%2FB0B4VLHLB1%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0B4VLHLB1%26pd_rd_r%3D7dfa77b4-d6a2-4e7e-8dc8-82026c4a4918%26pd_rd_w%3DFKcEv%26pd_rd_wg%3DwuA3W%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DVP3B92DK8NDND9JNRB2D%26qid%3D1703020450%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:11.713924-06','2023-12-19 15:14:11.747063-06','www.amazon.com'),
+ (3919,'Google Pixel 8 Case - Durable Protection - Stain-Resistant Silicone - Android Phone Case - Hazel',NULL,'B0CGVR48TG','https://m.media-amazon.com/images/I/51nL6RcpyDL._AC_UY218_.jpg',111,4.5,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Google-Pixel-Case-Protection-Stain-Resistant/dp/B0CGVR48TG/ref=cs_sr_dp_4?keywords=pixel+cases&qid=1703020450&sr=8-6',51,'2023-12-19 15:14:11.754916-06','2023-12-19 15:14:11.754916-06','www.amazon.com'),
+ (3920,'Crave Dual Guard for Google Pixel 6, Shockproof Protection Dual Layer Case for Google Pixel 6 - Forest Green',NULL,'B09CLKZJMD','https://m.media-amazon.com/images/I/81uCsr2PMnL._AC_UY218_.jpg',6587,4.5,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crave-Guard-Google-Shockproof-Protection/dp/B09CLKZJMD/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020450&sr=8-7',51,'2023-12-19 15:14:11.761633-06','2023-12-19 15:14:11.761633-06','www.amazon.com'),
+ (3921,'Spigen Liquid Air Armor Designed for Pixel 8 Pro Case (2023) - Matte Black',NULL,'B0BZ5TQG4C','https://m.media-amazon.com/images/I/71NCAq8yHmL._AC_UY218_.jpg',561,4.7,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Liquid-Armor-Designed-MP671/dp/B0BZ5TQG4C/ref=cs_sr_dp_3?keywords=pixel+cases&qid=1703020450&sr=8-8',51,'2023-12-19 15:14:11.76914-06','2023-12-19 15:14:11.76914-06','www.amazon.com'),
+ (3922,'Cresee Case for Google Pixel 8 Pro, Clear Cover with Reinforced Corner Bumper Slim Fit Shockproof Flexible TPU Case for Pixel 8 Pro - Transparent',NULL,'B0CH8JR5X3','https://m.media-amazon.com/images/I/71vzMHLgAkL._AC_UY218_.jpg',3,5.0,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cresee-Google-Reinforced-Shockproof-Flexible/dp/B0CH8JR5X3/ref=cs_sr_dp_2?keywords=pixel+cases&qid=1703020450&sr=8-9',51,'2023-12-19 15:14:11.775764-06','2023-12-19 15:14:11.775764-06','www.amazon.com'),
+ (3923,'Spigen Ultra Hybrid Designed for Pixel 8 Pro Case (2023) - Crystal Clear',NULL,'B0BZ5PVX2C','https://m.media-amazon.com/images/I/61CBrlxVNfL._AC_UY218_.jpg',505,4.5,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Ultra-Hybrid-Designed-MP671/dp/B0BZ5PVX2C/ref=cs_sr_dp_3?keywords=pixel+cases&qid=1703020450&sr=8-10',51,'2023-12-19 15:14:11.782223-06','2023-12-19 15:14:11.782223-06','www.amazon.com'),
+ (3924,'Janmitta for Google Pixel 8 Case with Screen Protector + Camera Lens Protector,Heavy Duty Shockproof Full Body Protective Cover Built in Rotatable Metal Ring Holder Kickstand,2023 Mint Green',NULL,'B0C8SYZX33','https://m.media-amazon.com/images/I/71Ww570xLWL._AC_UY218_.jpg',2025,4.4,'$12.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Janmitta-Google-Pixel-Shockproof-Protective/dp/B0C8SYZX33/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020450&sr=8-11',51,'2023-12-19 15:14:11.789542-06','2023-12-19 15:14:11.789542-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3934,'NEWDERY 10000mAh Battery Case for Google Pixel 7 Pro, Ultra Powerful Rechargeable Charger, Protective Extended Backup - Black',NULL,'B0BL7Y73GB','https://m.media-amazon.com/images/I/71HEWqZcddL._AC_UY218_.jpg',137,3.5,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2ODc2NTc4ODk3NzI0NzE3OjE3MDMwMjA0NTA6c3BfYnRmOjMwMDA1ODc3MjQ2NzEwMjo6MDo6&url=%2FNEWDERY-10000mAh-Powerful-Rechargeable-Protective%2Fdp%2FB0BL7Y73GB%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020450%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',51,'2023-12-19 15:14:11.86382-06','2023-12-19 15:14:11.86382-06','www.amazon.com'),
+ (4580,'Add-A-Bag Luggage Strap Jacket Gripper, Luggage Straps Baggage Suitcase Belts Travel Accessories - Make Your Hands Free, Easy to Carry Your Extra Bags, (1x Black+1x Grey)',NULL,'B0B5H3DFZH','https://m.media-amazon.com/images/I/61aQo-SptCL._AC_UL320_.jpg',1295,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Luggage-Gripper-Baggage-Suitcase-Accessories/dp/B0B5H3DFZH/ref=sr_1_85?keywords=travel+accessories&qid=1703020686&sr=8-85',57,'2023-12-19 15:18:08.046789-06','2023-12-19 15:18:08.046789-06','www.amazon.com'),
+ (3926,'DEERLAMN for Google Pixel 8 Pro Case with Slide Camera Cover+Screen Protector (1 Pack), Rotated Ring Kickstand Military Grade Shockproof Heavy Duty Protective Cover -Black',NULL,'B0C6K47ZDT','https://m.media-amazon.com/images/I/71YeI1IHfRL._AC_UY218_.jpg',151,4.2,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DEERLAMN-Protector-Kickstand-Shockproof-Protective/dp/B0C6K47ZDT/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020450&sr=8-13',51,'2023-12-19 15:14:11.803666-06','2023-12-19 15:14:11.803666-06','www.amazon.com'),
+ (3927,'Crave Dual Guard for Google Pixel 7 Case, Shockproof Protection Dual Layer Case for Google Pixel 7 - Forest Green',NULL,'B0BC8RYLNN','https://m.media-amazon.com/images/I/81Tc6kVSXXL._AC_UY218_.jpg',1585,4.7,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crave-Guard-Google-Shockproof-Protection/dp/B0BC8RYLNN/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020450&sr=8-14',51,'2023-12-19 15:14:11.81138-06','2023-12-19 15:14:11.81138-06','www.amazon.com'),
+ (3928,'Caseology Parallax 3D Ergonomic Design Case Compatible with Google Pixel 8 case 5G [Military Grade Drop Tested](2023) - Burgundy',NULL,'B0BZ72DVFK','https://m.media-amazon.com/images/I/61Dde2zB6-L._AC_UY218_.jpg',98,4.6,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Caseology-Parallax-Protective-Compatible-Military/dp/B0BZ72DVFK/ref=cs_sr_dp_3?keywords=pixel+cases&qid=1703020450&sr=8-15',51,'2023-12-19 15:14:11.817948-06','2023-12-19 15:14:11.817948-06','www.amazon.com'),
+ (3929,'OTOFLY Designed for Pixel 8 Pro Case, Silicone Shockproof Slim Thin Phone Case for Google Pixel 8 Pro 6.7 inch (Pine Green)',NULL,'B0CGLRLTM6','https://m.media-amazon.com/images/I/61XUhwc8OGL._AC_UY218_.jpg',362,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OTOFLY-Designed-Silicone-Shockproof-Green/dp/B0CGLRLTM6/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020450&sr=8-16',51,'2023-12-19 15:14:11.825731-06','2023-12-19 15:14:11.825731-06','www.amazon.com'),
+ (3930,'Humixx Shockproof Designed for Google Pixel 7 Case [Military Grade Drop Tested] [Ultimate Silky Touch] Translucent Hard Back Protective Slim Thin Matte Black Phone Cases for Pixel 7 5G 6.1”',NULL,'B0C7S756SW','https://m.media-amazon.com/images/I/71HMlaHVQCL._AC_UY218_.jpg',737,4.6,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Humixx-Translucent-Protection-Anti-Fingerprint-Shockproof/dp/B0C7S756SW/ref=cs_sr_dp_2?keywords=pixel+cases&qid=1703020450&sr=8-18',51,'2023-12-19 15:14:11.832499-06','2023-12-19 15:14:11.832499-06','www.amazon.com'),
+ (3931,'TAURI for Google Pixel 8 Pro Case, [5 in 1] 1X Clear Case [Not-Yellowing] with 2X TPU Film Screen Protector + 2X Camera Lens Protector, [Military Grade Protection] Slim Case for Pixel 8 Pro',NULL,'B0CHM29R9J','https://m.media-amazon.com/images/I/714zBGOytqL._AC_UY218_.jpg',2834,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TAURI-Pixel-Pro-Not-Yellowing-Protection/dp/B0CHM29R9J/ref=cs_sr_dp?keywords=pixel+cases&qid=1703020450&sr=8-19',51,'2023-12-19 15:14:11.840097-06','2023-12-19 15:14:11.840097-06','www.amazon.com'),
+ (3932,'Spigen Ultra Hybrid [Anti-Yellowing Technology] Designed for Pixel 7 Case (2022) - Crystal Clear',NULL,'B09YMVP2BG','https://m.media-amazon.com/images/I/61D88K-UYkL._AC_UY218_.jpg',2677,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Hybrid-Anti-Yellowing-Technology-Designed/dp/B09YMVP2BG/ref=cs_sr_dp_2?keywords=pixel+cases&qid=1703020450&sr=8-20',51,'2023-12-19 15:14:11.84899-06','2023-12-19 15:14:11.84899-06','www.amazon.com'),
+ (3933,'Thinborne Compatible with Google Pixel 8 Pro Case, [Made of 600D Aramid Fiber] [Unbelievable Thin and Slim] [Minimalist Style with Carbon Fiber Textures] [ Free Screen Protector]',NULL,'B0CHL5QFTM','https://m.media-amazon.com/images/I/61eR1wDhmIL._AC_UY218_.jpg',38,4.8,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2ODc2NTc4ODk3NzI0NzE3OjE3MDMwMjA0NTA6c3BfYnRmOjMwMDA3Mzk0OTE5MDAwMjo6MDo6&url=%2FThinborne-Compatible-Unbelievable-Minimalist-Protector%2Fdp%2FB0CHL5QFTM%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020450%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',51,'2023-12-19 15:14:11.857153-06','2023-12-19 15:14:11.857153-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4047,'Skechers',NULL,'B000PRLDMC','https://m.media-amazon.com/images/I/81ertdte74L._AC_UL320_.jpg',20808,4.5,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Energy-Afterburn-Lace-Up-Sneaker/dp/B000PRLDMC/ref=sr_1_37?keywords=men%27s+shoes&qid=1703020483&sr=8-37',53,'2023-12-19 15:14:44.981743-06','2023-12-19 15:14:44.981743-06','www.amazon.com'),
+ (3925,'Crave Slim Guard for Pixel 5a Case, Shockproof Case for Google Pixel 5a 5G - Forest Green',NULL,'B08ZHQY2TG','https://aax-us-iad.amazon.com/e/loi/imp?b=JDJekRZ4j_YBB3XbsLKNuOMAAAGMg-3URQEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICBEx188',692,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RKkFnWUOvKYLrn3GdldcCL0AAAGMg-3T_AEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICBk_LjC/https://www.amazon.com/Crave-Guard-Pixel-Shockproof-Google/dp/B08ZHQY2TG/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=pixel+cases&keywords=pixel+cases&pd_rd_i=B08ZHQY2TG&pd_rd_r=7dfa77b4-d6a2-4e7e-8dc8-82026c4a4918&pd_rd_w=QpqqT&pd_rd_wg=wuA3W&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=VP3B92DK8NDND9JNRB2D&qid=1703020450&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',51,'2023-12-19 15:14:11.796802-06','2023-12-19 15:14:11.870377-06','www.amazon.comhttps:'),
+ (4581,'1Pack Travel Pill Organizer, 8 Compartments Portable Pill Case, Small Pill Box for Pocket Purse Portable Medicine Vitamin Container Beige',NULL,'B0BLZM9NCF','https://m.media-amazon.com/images/I/61+9-yC3nQL._AC_UL320_.jpg',6621,4.4,'$3.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Organizer-Compartments-Portable-Medicine-Container/dp/B0BLZM9NCF/ref=sr_1_86?keywords=travel+accessories&qid=1703020686&sr=8-86',57,'2023-12-19 15:18:08.053397-06','2023-12-19 15:18:08.053397-06','www.amazon.com'),
+ (3936,'DagoRoo for Pixel 8 Pro Case, Google 8 Pro [Military Grade Protective] Slim Soft TPU & Hard PC, Girls Women Crystal Clear Flower Pattern Cases for Google Pixel 8 Pro -Purple',NULL,'B0CLVG2LPG','https://m.media-amazon.com/images/I/71cW3mjqkkL._AC_UY218_.jpg',42,4.8,'$9.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DagoRoo-Military-Protective-Crystal-Pattern/dp/B0CLVG2LPG/ref=cs_sr_dp_5?keywords=pixel+cases&qid=1703020458&sr=8-19',51,'2023-12-19 15:14:19.211957-06','2023-12-19 15:14:19.211957-06','www.amazon.com'),
+ (3937,'Crave Dual Guard for Google Pixel 8 Pro Case, Shockproof Protection Dual Layer Case for Google Pixel 8 Pro - Forest Green',NULL,'B0CC5K92BT','https://m.media-amazon.com/images/I/81tFWwJqVxL._AC_UY218_.jpg',206,4.7,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crave-Guard-Google-Shockproof-Protection/dp/B0CC5K92BT/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020458&sr=8-20',51,'2023-12-19 15:14:19.218883-06','2023-12-19 15:14:19.218883-06','www.amazon.com'),
+ (3938,'Crave Dual Guard for Google Pixel 8 Case, Shockproof Protection Dual Layer Case for Google Pixel 8 - Black',NULL,'B0CC5KD3LZ','https://m.media-amazon.com/images/I/81qhkS6lcUL._AC_UY218_.jpg',148,4.7,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crave-Guard-Google-Shockproof-Protection/dp/B0CC5KD3LZ/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020458&sr=8-21',51,'2023-12-19 15:14:19.225735-06','2023-12-19 15:14:19.225735-06','www.amazon.com'),
+ (3940,'X-level Google Pixel 8 Pro Case, Thin Slim Premium PU Leather Soft TPU Bumper Shockproof Protective Phone Cover for Google Pixel 8 Pro 2023 (Blue)',NULL,'B0CGX3D23D','https://m.media-amazon.com/images/I/6131ox6QI4L._AC_UL320_.jpg',33,4.2,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzE0MDY3NTQ2NjY4NzE3OjE3MDMwMjA0NTg6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA2NzkwMTI0ODUwMjo6MDo6&url=%2FX-level-Premium-Leather-Shockproof-Protective%2Fdp%2FB0CGX3D23D%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0CGX3D23D%26pd_rd_r%3Dc120204e-4227-4cca-80c5-474c300b9e67%26pd_rd_w%3DzUpTy%26pd_rd_wg%3DufYZ4%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9QXARFEDAMSA8PB0SEP3%26qid%3D1703020458%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-17-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:19.241625-06','2023-12-19 15:14:19.241625-06','www.amazon.com'),
+ (3939,'Miimall Compatible for Magsafe Charging Designed for Google Pixel 7a Case (2023) - Matte Clear & Black',NULL,'B0C4H6M7S7','https://m.media-amazon.com/images/I/71TdiC77qSL._AC_UL320_.jpg',20,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzE0MDY3NTQ2NjY4NzE3OjE3MDMwMjA0NTg6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE2NzQyODE3MjM5ODo6NDo6&url=%2FMiimall-Compatible-Magsafe-Charging-Designed%2Fdp%2FB0C4H6M7S7%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0C4H6M7S7%26pd_rd_r%3Dc120204e-4227-4cca-80c5-474c300b9e67%26pd_rd_w%3DzUpTy%26pd_rd_wg%3DufYZ4%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9QXARFEDAMSA8PB0SEP3%26qid%3D1703020458%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-21-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:19.233973-06','2023-12-19 15:14:19.268078-06','www.amazon.com'),
+ (4048,'PUMA',NULL,'B01G3LZAI6','https://m.media-amazon.com/images/I/71VfZS6bXAL._AC_UL320_.jpg',54448,4.4,'$51.14','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-Tazon-Black-Silver-Running/dp/B01G3LZAI6/ref=sr_1_38?keywords=men%27s+shoes&qid=1703020483&sr=8-38',53,'2023-12-19 15:14:44.989295-06','2023-12-19 15:14:44.989295-06','www.amazon.com'),
+ (4582,'GEAR AID HEROCLIP (Mini) Carabiner Gear Clip and Hook, for Hanging Bags, Purses, Lanterns, Strollers, Tools, Helmets, Water Bottles, and More',NULL,'B07JJZTYSV','https://m.media-amazon.com/images/I/81EO2vNo1RL._AC_UL320_.jpg',3045,4.7,'$16.63','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HEROCLIP-Carabiner-Travel-Luggage-Small/dp/B07JJZTYSV/ref=sr_1_90?keywords=travel+accessories&qid=1703020686&sr=8-90',57,'2023-12-19 15:18:08.070737-06','2023-12-19 15:18:08.070737-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3935,'CaseBorne Compatible with Google Pixel 8 Pro Protective Case - 5-Layer Construction, Compatible with MagSafe, Slim Yet Rugged with Tempered Glass Screen Protector Green',NULL,'B0CBQPR9J9','https://m.media-amazon.com/images/I/61hDn8d84ML._AC_UL320_.jpg',78,4.3,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MTY2MTQzNTI5MTY1NzE3OjE3MDMwMjA0NTg6c3BfYXRmX25leHQ6MzAwMDYyMTQ0MTMyNDAyOjowOjo&url=%2FCaseBorne-Compatible-Google-Pixel-Protective%2Fdp%2FB0CBQPR9J9%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020458%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',51,'2023-12-19 15:14:19.19237-06','2023-12-19 15:14:19.247492-06','www.amazon.com'),
+ (3941,'X-level Google Pixel 6 Case, Premium PU Leather Soft TPU Bumper Shockproof Protective Phone Cover Case for Pixel 6 (Brown)',NULL,'B09DYBW9DJ','https://m.media-amazon.com/images/I/61Y-ensefTL._AC_UL320_.jpg',921,4.5,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzE0MDY3NTQ2NjY4NzE3OjE3MDMwMjA0NTg6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5NDAwNTA3MDE1MTo6Mjo6&url=%2FX-level-Anti-Scratch-Premium-Shockproof-Protective%2Fdp%2FB09DYBW9DJ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB09DYBW9DJ%26pd_rd_r%3Dc120204e-4227-4cca-80c5-474c300b9e67%26pd_rd_w%3DzUpTy%26pd_rd_wg%3DufYZ4%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9QXARFEDAMSA8PB0SEP3%26qid%3D1703020458%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-19-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:19.25445-06','2023-12-19 15:14:19.25445-06','www.amazon.com'),
+ (3942,'Poetic Revolution Case for Google Pixel 8 Pro 5G 6.7 inch, Built-in Screen Protector Work with Fingerprint ID, Full Body Rugged Shockproof Protective Cover Case with Kickstand, Black',NULL,'B0CHJM2SY9','https://m.media-amazon.com/images/I/71-X39JuiML._AC_UL320_.jpg',22,4.7,'$17.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NzE0MDY3NTQ2NjY4NzE3OjE3MDMwMjA0NTg6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA2NzgwMjAyNzIwMjo6Mzo6&url=%2FPoetic-Revolution-Fingerprint-Shockproof-Protective%2Fdp%2FB0CHJM2SY9%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dpixel%2Bcases%26keywords%3Dpixel%2Bcases%26pd_rd_i%3DB0CHJM2SY9%26pd_rd_r%3Dc120204e-4227-4cca-80c5-474c300b9e67%26pd_rd_w%3DzUpTy%26pd_rd_wg%3DufYZ4%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3D9QXARFEDAMSA8PB0SEP3%26qid%3D1703020458%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-20-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',51,'2023-12-19 15:14:19.261574-06','2023-12-19 15:14:19.261574-06','www.amazon.com'),
+ (3943,'Ringke Onyx [Feels Good in The Hand] Compatible with Google Pixel 8 Case, Anti-Fingerprint Technology Prevents Oily Smudges Non-Slip Enhanced Grip Precise Cutouts for Camera Lenses - Dark Green',NULL,'B0CHMW2K8N','https://m.media-amazon.com/images/I/71WoviM8xoL._AC_UY218_.jpg',617,4.7,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ringke-Compatible-Anti-Fingerprint-Technology-Prevents/dp/B0CHMW2K8N/ref=cs_sr_dp_3?keywords=pixel+cases&qid=1703020458&sr=8-22',51,'2023-12-19 15:14:19.276936-06','2023-12-19 15:14:19.276936-06','www.amazon.com'),
+ (3944,'OtterBox Google Pixel 7A Commuter Series Case - TREES COMPANY (Green), slim & tough, pocket-friendly, with port protection',NULL,'B0C483NTWF','https://m.media-amazon.com/images/I/61KPKS-4AML._AC_UY218_.jpg',186,4.6,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OtterBox-Google-Pixel-Commuter-Case/dp/B0C483NTWF/ref=cs_sr_dp_2?keywords=pixel+cases&qid=1703020458&sr=8-23',51,'2023-12-19 15:14:19.283411-06','2023-12-19 15:14:19.283411-06','www.amazon.com'),
+ (3945,'Juntone for Google Pixel 8 Case Clear with Magnetic [Compatible with MagSafe] [Non-Yellowing] [10 FT Military Grade Drop Protection] Shockproof Slim Case for Pixel 8 Case, Crystal Clear',NULL,'B0CGXNF6JD','https://m.media-amazon.com/images/I/71MHR+Sqn7L._AC_UY218_.jpg',422,4.3,'$13.31','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Juntone-Compatible-Non-Yellowing-Protection-Shockproof/dp/B0CGXNF6JD/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020458&sr=8-24',51,'2023-12-19 15:14:19.291688-06','2023-12-19 15:14:19.291688-06','www.amazon.com'),
+ (3946,'Spigen Ultra Hybrid [Anti-Yellowing Technology] Designed for Google Pixel 6 Case (2021) - Crystal Clear',NULL,'B0964GD8B5','https://m.media-amazon.com/images/I/51A1x7OXQLL._AC_UY218_.jpg',7027,4.5,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Hybrid-Anti-Yellowing-Technology-Designed/dp/B0964GD8B5/ref=cs_sr_dp_2?keywords=pixel+cases&qid=1703020458&sr=8-25',51,'2023-12-19 15:14:19.298639-06','2023-12-19 15:14:19.298639-06','www.amazon.com'),
+ (3947,'DagoRoo for Pixel 8 Case, Google 8 Case with Tempered Glass Screen Protector [2 Pack], [Military Grade Protective] Slim Soft TPU & Hard PC, Girls Women Crystal Clear Flower Pattern Cases-Purple',NULL,'B0CJL2LXH8','https://m.media-amazon.com/images/I/71aSfj8O-LL._AC_UY218_.jpg',22,4.3,'$9.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DagoRoo-Tempered-Protector-Protective-Cases-Purple/dp/B0CJL2LXH8/ref=cs_sr_dp_5?keywords=pixel+cases&qid=1703020458&sr=8-26',51,'2023-12-19 15:14:19.307025-06','2023-12-19 15:14:19.307025-06','www.amazon.com'),
+ (3948,'Poetic Revolution Case for Google Pixel 8 5G 6.2 inch, [20FT Mil-Grade Drop Tested], Full-Body Rugged Shockproof Cover with Kickstand and Built-in-Screen Protector, Black',NULL,'B0CHJJXLD4','https://m.media-amazon.com/images/I/712Td6TaLyL._AC_UY218_.jpg',3,4.0,'$17.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MTY2MTQzNTI5MTY1NzE3OjE3MDMwMjA0NTg6c3BfbXRmOjMwMDA3NzA3OTA0MTYwMjo6MDo6&url=%2FPoetic-Revolution-Mil-Grade-Full-Body-Shockproof%2Fdp%2FB0CHJJXLD4%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020458%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',51,'2023-12-19 15:14:19.313152-06','2023-12-19 15:14:19.313152-06','www.amazon.com'),
+ (3949,'Spigen Liquid Air Armor Designed for Pixel 8 Case (2023) - Abyss Green',NULL,'B0BZ5RRT1B','https://m.media-amazon.com/images/I/71MICy2koOL._AC_UY218_.jpg',327,4.7,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Liquid-Armor-Designed-MP620/dp/B0BZ5RRT1B/ref=cs_sr_dp_3?keywords=pixel+cases&qid=1703020458&sr=8-29',51,'2023-12-19 15:14:19.319652-06','2023-12-19 15:14:19.319652-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3950,'VRS DESIGN Damda Glide Pro Wallet Phone Case for Pixel 8 Pro, Sturdy Semi Auto Card Holder Wallet [4 Cards] Case Compatible for Pixel 8 Pro Case (2023) Matte Black',NULL,'B0CL6KQY17','https://m.media-amazon.com/images/I/71LWgxTzidL._AC_UY218_.jpg',32,4.5,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/VRS-DESIGN-Wallet-Sturdy-Compatible/dp/B0CL6KQY17/ref=cs_sr_dp_2?keywords=pixel+cases&qid=1703020458&sr=8-30',51,'2023-12-19 15:14:19.3264-06','2023-12-19 15:14:19.3264-06','www.amazon.com'),
+ (3951,'Spigen Tough Armor Designed for Pixel 8 Pro Case (2023) - Black',NULL,'B0BZ5XTSJ7','https://m.media-amazon.com/images/I/61JwJC8GbYL._AC_UY218_.jpg',497,4.5,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Tough-Armor-Designed-MP671/dp/B0BZ5XTSJ7/ref=cs_sr_dp_4?keywords=pixel+cases&qid=1703020458&sr=8-31',51,'2023-12-19 15:14:19.332027-06','2023-12-19 15:14:19.332027-06','www.amazon.com'),
+ (3952,'Spigen Ultra Hybrid Designed for Pixel 7a Case (2023) - Crystal Clear',NULL,'B0BTK334LB','https://m.media-amazon.com/images/I/618Wn80KEHL._AC_UY218_.jpg',845,4.7,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Ultra-Hybrid-Designed-MP610/dp/B0BTK334LB/ref=cs_sr_dp_3?keywords=pixel+cases&qid=1703020458&sr=8-32',51,'2023-12-19 15:14:19.338996-06','2023-12-19 15:14:19.338996-06','www.amazon.com'),
+ (3953,'Spigen Thin Fit Designed for Pixel 8 Case (2023) - Black',NULL,'B0BZ67PWJT','https://m.media-amazon.com/images/I/61hYxsNX3nL._AC_UY218_.jpg',141,4.3,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spigen-Thin-Designed-MP620-Case/dp/B0BZ67PWJT/ref=cs_sr_dp_5?keywords=pixel+cases&qid=1703020458&sr=8-33',51,'2023-12-19 15:14:19.345945-06','2023-12-19 15:14:19.345945-06','www.amazon.com'),
+ (3954,'Btscase for Google Pixel 6 Case, Gold Glitter Bling Marble Pattern Hard PC Slim Fit Shockproof Full Body Rugged Drop Protective Women Girls Cover Cute Case for Google Pixel 6 (2021), Green',NULL,'B0CBB4Z7RM','https://m.media-amazon.com/images/I/71eIuVIx9kL._AC_UY218_.jpg',595,4.7,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Btscase-Glitter-Pattern-Shockproof-Protective/dp/B0CBB4Z7RM/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020458&sr=8-34',51,'2023-12-19 15:14:19.352796-06','2023-12-19 15:14:19.352796-06','www.amazon.com'),
+ (3955,'OTOFLY Designed for Pixel 8 Case, Silicone Shockproof Slim Thin Phone Case for Google Pixel 8 6.2 inch (Pine Green)',NULL,'B0CGLRNMPT','https://m.media-amazon.com/images/I/61bpwGgeVYL._AC_UY218_.jpg',163,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OTOFLY-Designed-Silicone-Shockproof-Green/dp/B0CGLRNMPT/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020458&sr=8-35',51,'2023-12-19 15:14:19.35972-06','2023-12-19 15:14:19.35972-06','www.amazon.com'),
+ (3956,'OTOFLY Designed for Pixel 7 Case, Silicone Shockproof Slim Thin Phone Case for Google Pixel 7 6.3 inch (Pine Green)',NULL,'B0BGPN9TQC','https://m.media-amazon.com/images/I/716zbSJ0y+L._AC_UY218_.jpg',962,4.5,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OTOFLY-Google-Pixel-7-Phone-Case/dp/B0BGPN9TQC/ref=cs_sr_dp_n?keywords=pixel+cases&qid=1703020458&sr=8-36',51,'2023-12-19 15:14:19.365657-06','2023-12-19 15:14:19.365657-06','www.amazon.com'),
+ (3957,'Bellroy Leather Case for Google Pixel Fold - Bluestone',NULL,'B0C9H1VC6P','https://m.media-amazon.com/images/I/4107AHypKnL._AC_UY218_.jpg',15,2.0,'$75.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MTY2MTQzNTI5MTY1NzE3OjE3MDMwMjA0NTg6c3BfYnRmOjMwMDAwNzIzMjgwNTAwMjo6MDo6&url=%2FBellroy-Leather-Case-Google-Pixel%2Fdp%2FB0C9H1VC6P%2Fref%3Dsr_1_37_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020458%26sr%3D8-37-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',51,'2023-12-19 15:14:19.372761-06','2023-12-19 15:14:19.372761-06','www.amazon.com'),
+ (3958,'Crystal Clear for Google Pixel 7a Case Shockproof Soft Protective Flexible TPU Bumper Drop Protection Transparent Slim Thin Cover for Pixel 7a Red',NULL,'B0C3X7BB49','https://m.media-amazon.com/images/I/71f1EGzFyWL._AC_UY218_.jpg',2,5.0,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MTY2MTQzNTI5MTY1NzE3OjE3MDMwMjA0NTg6c3BfYnRmOjIwMDE4MDAzMTk1NjU5ODo6MDo6&url=%2FShockproof-Protective-Flexible-Protection-Transparent%2Fdp%2FB0C3X7BB49%2Fref%3Dsr_1_38_sspa%3Fkeywords%3Dpixel%2Bcases%26qid%3D1703020458%26sr%3D8-38-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',51,'2023-12-19 15:14:19.37914-06','2023-12-19 15:14:19.37914-06','www.amazon.com'),
+ (3959,'Carveit Wood Case for Pixel 6 Pro Case [Real Wood & Soft TPU] Shockproof Hybrid Protective Cover Unique & Classy Wooden Case Compatible with Google Pixel 6 Pro (Vegvisir Viking Compass-Blackwood)',NULL,'B09MK75NXK','https://aax-us-iad.amazon.com/e/loi/imp?b=JIY1P67lHprxo-FUzSorXhkAAAGMg-3yDgEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICBsvj0g',346,4.7,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RIY1P67lHprxo-FUzSorXhkAAAGMg-3x1AEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICBsvj0g/https://www.amazon.com/Carveit-Shockproof-Protective-Compatible-Compass-Blackwood/dp/B09MK75NXK/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=pixel+cases&keywords=pixel+cases&pd_rd_i=B09MK75NXK&pd_rd_r=6565a1a6-2e73-4203-b9eb-067148c0babc&pd_rd_w=m8dM2&pd_rd_wg=iCkdc&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=9QXARFEDAMSA8PB0SEP3&qid=1703020458&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-17-48f7baba-8e26-45f3-8811-e1a601ad20bf',51,'2023-12-19 15:14:19.385502-06','2023-12-19 15:14:19.385502-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3960,'GIQ USB C hub USB 3.0 to Dual HDMI VGA Adapter Triple Display Laptop Docking Station Dual Display Compatible for MacBook M1 USB Dock-Black',NULL,'B0B5RDRK5Y','https://m.media-amazon.com/images/I/61N4TZF1IvL._AC_UY218_.jpg',1853,4.4,'$92.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NzczMjI2Nzc4NzcxNzE3OjE3MDMwMjA0Njc6c3BfYXRmOjIwMDA4Njk1NzAxNzQ5ODo6MDo6&url=%2FDocking-Station-Adapter-Compatible-Dock-Black%2Fdp%2FB0B5RDRK5Y%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020467%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',52,'2023-12-19 15:14:28.245942-06','2023-12-19 15:14:28.245942-06','www.amazon.com'),
+ (3961,'FORGING MOUNT Heavy Duty Dual Monitor Arms - Desk Mount Gas Spring Computer Monitor Stand Fits 15-42 inch, Height Adjustable Double Full Motion with Clamp and Grommet Base, Each Arm Holds Up to 44lbs',NULL,'B0BW8D7FGZ','https://m.media-amazon.com/images/I/71PQy8uqYQL._AC_UY218_.jpg',10,3.9,'$119.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NzczMjI2Nzc4NzcxNzE3OjE3MDMwMjA0Njc6c3BfYXRmOjMwMDEwNzY0MzAyMDQwMjo6MDo6&url=%2FFORGING-MOUNT-Heavy-Duty-Monitor%2Fdp%2FB0BW8D7FGZ%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020467%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',52,'2023-12-19 15:14:28.254336-06','2023-12-19 15:14:28.254336-06','www.amazon.com'),
+ (3962,'UtechSmart Venus Pro RGB Wireless MMO Gaming Mouse, 16,000 DPI Optical Sensor, 2.4 GHz Transmission Technology, Ergonomic Design, 16M Chroma RGB Lighting, 16 programmable Buttons, Up to 70 Hours',NULL,'B07XP4K152','https://m.media-amazon.com/images/I/61EoZYj1SjL._AC_UY218_.jpg',22050,4.5,'$47.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/UtechSmart-transmission-technology-Ergonomic-programmable/dp/B07XP4K152/ref=sr_1_3?keywords=computer+accessories&qid=1703020467&sr=8-3',52,'2023-12-19 15:14:28.26203-06','2023-12-19 15:14:28.26203-06','www.amazon.com'),
+ (3963,'CushZone Foot Rest for Under Desk at Work Adjustable Foam for Office, Work, Gaming, Computer, Gift, Home Office Accessories Back & Hip Pain Relief (Grey)',NULL,'B0B7HZNMPZ','https://m.media-amazon.com/images/I/812S5LcnAJL._AC_UY218_.jpg',2075,4.5,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CushZone-Adjustable-Office-Computer-Accessories/dp/B0B7HZNMPZ/ref=sr_1_4?keywords=computer+accessories&qid=1703020467&sr=8-4',52,'2023-12-19 15:14:28.269376-06','2023-12-19 15:14:28.269376-06','www.amazon.com'),
+ (3964,'KAFRI RGB Headphone Stand with Wireless Charger Desk Gaming Headset Holder Hanger Rack with 10W/7.5W Fast Charge QI Wireless Charging Pad - Suitable for Gamer Desktop Table Game Earphone Accessories',NULL,'B07W549S56','https://m.media-amazon.com/images/I/71wi7nIafdL._AC_UY218_.jpg',3597,4.4,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Headphone-Wireless-Charger-KAFRI-Charging/dp/B07W549S56/ref=sr_1_5?keywords=computer+accessories&qid=1703020467&sr=8-5',52,'2023-12-19 15:14:28.276949-06','2023-12-19 15:14:28.276949-06','www.amazon.com'),
+ (3965,'MCHOSE Laptop Stand, Adjustable Computer Stand, Ergonomic Laptop Riser with 360° Rotating Base, Notebook Stand Compatible with All 10-17” Laptops, Space Grey',NULL,'B0BHYTZB43','https://aax-us-iad.amazon.com/e/loi/imp?b=JEFpM0NwmZzpEzBfj1B36bsAAAGMg-4USwEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICA_z5-B',514,4.6,'$44.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/REFpM0NwmZzpEzBfj1B36bsAAAGMg-4UFgEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICA_z5-B/https://www.amazon.com/MCHOSE-Adjustable-Computer-Ergonomic-Compatible/dp/B0BHYTZB43/ref=sxin_14_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=computer+accessories&keywords=computer+accessories&pd_rd_i=B0BHYTZB43&pd_rd_r=ed6308b0-546f-44cf-9316-99343fc4ce09&pd_rd_w=wZgFw&pd_rd_wg=G1km0&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=VVGBRE0SHQGHCGDXZSNK&qid=1703020467&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',52,'2023-12-19 15:14:28.284358-06','2023-12-19 15:14:28.284358-06','www.amazon.comhttps:'),
+ (4049,'adidas',NULL,'B0BG93252B','https://m.media-amazon.com/images/I/81uBxoBI0RL._AC_UL320_.jpg',51,4.2,'$40.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Kaptir-Sneaker-Black-White/dp/B0BG93252B/ref=sr_1_39?keywords=men%27s+shoes&qid=1703020483&sr=8-39',53,'2023-12-19 15:14:44.996984-06','2023-12-19 15:14:44.996984-06','www.amazon.com'),
+ (3966,'MDOZQ Office Desk Accessories 2pcs Monitor Memo Board Computer Message Board Office Supplies for Women Men Computer Sticky Note Holder Home Office Accessories Desktop Message Office Decor',NULL,'B0BRMX3SWH','https://m.media-amazon.com/images/I/61yjorGIhAL._AC_UY218_.jpg',486,4.4,'$6.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Accessories-Computer-Monitor-Message-Supplies/dp/B0BRMX3SWH/ref=sr_1_6?keywords=computer+accessories&qid=1703020467&sr=8-6',52,'2023-12-19 15:14:28.29083-06','2023-12-19 15:14:28.29083-06','www.amazon.com'),
+ (3967,'ODISTAR Desktop Vacuum Cleaner,Mini Table dust Sweeper Energy Saving,High Endurance up to 400 mins,Cordless&360º Rotatable for Cleaning Hairs,Crumbs,Computer Keyboard of Gifts for Kids (Pink)',NULL,'B082D8F917','https://m.media-amazon.com/images/I/41tVjk+BsxL._AC_UY218_.jpg',4933,4.5,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NzczMjI2Nzc4NzcxNzE3OjE3MDMwMjA0Njc6c3BfbXRmOjIwMDAyNjI0MTI0MjY5ODo6MDo6&url=%2FODISTAR-Endurance-Cordless-Rotatable-Cleaning%2Fdp%2FB082D8F917%2Fref%3Dsr_1_7_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020467%26sr%3D8-7-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',52,'2023-12-19 15:14:28.299602-06','2023-12-19 15:14:28.299602-06','www.amazon.com'),
+ (3968,'Anker 332 USB-C Hub (5-in-1) with 4K HDMI Display, 5Gbps - and 2 5Gbps USB-A Data Ports and for MacBook Pro, MacBook Air, Dell XPS, Lenovo Thinkpad, HP Laptops and More',NULL,'B0BQLLB61B','https://m.media-amazon.com/images/I/61gciQ4Uu9L._AC_UY218_.jpg',2490,4.4,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Anker-Display-MacBook-Thinkpad-Laptops/dp/B0BQLLB61B/ref=sr_1_8?keywords=computer+accessories&qid=1703020467&sr=8-8',52,'2023-12-19 15:14:28.306962-06','2023-12-19 15:14:28.306962-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3969,'Nightstand Edge Mount Power Strip with USB-C Ports Tabletop Surge Protector Desk Clamp Power Sockets with 3 AC Outlets &4 Fast Charging USB Ports for Home Office Hotel and Dormitory',NULL,'B0B7XYQBSR','https://m.media-amazon.com/images/I/61IfJQTeRuL._AC_UY218_.jpg',177,4.5,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nightstand-Tabletop-Protector-Charging-Dormitory/dp/B0B7XYQBSR/ref=sr_1_9?keywords=computer+accessories&qid=1703020467&sr=8-9',52,'2023-12-19 15:14:28.312813-06','2023-12-19 15:14:28.312813-06','www.amazon.com'),
+ (3970,'WESTREE Dual Monitor Stand Riser with Two Drawers, Extra Large Storage for 2 Monitors, Desktop Oraganizer Computer,Laptop,Screen,Printer,TV',NULL,'B09712RBWB','https://m.media-amazon.com/images/I/71hZ9GVAplL._AC_UY218_.jpg',2209,4.6,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WESTREE-Monitor-Drawers-Computer-Organizer/dp/B09712RBWB/ref=sr_1_10?keywords=computer+accessories&qid=1703020467&sr=8-10',52,'2023-12-19 15:14:28.318706-06','2023-12-19 15:14:28.318706-06','www.amazon.com'),
+ (3971,'Laptop Screen Keyboard Cleaner Kit, Electronics Cleaning Tool for MacBook iPad iPhone Pro, Brush Tool for Tablet, Computer, PC Monitor,TV Camera Lens with 2ml Mist Spray New Compact with Patent',NULL,'B0BJZ2PFCV','https://m.media-amazon.com/images/I/71ySJCxI4JL._AC_UY218_.jpg',1270,4.5,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keyboard-Cleaner-Electronics-Cleaning-Computer/dp/B0BJZ2PFCV/ref=sr_1_11?keywords=computer+accessories&qid=1703020467&sr=8-11',52,'2023-12-19 15:14:28.326437-06','2023-12-19 15:14:28.326437-06','www.amazon.com'),
+ (3972,'Benazcap X Large Memory Seat Cushion for Office Chair Pressure Relief Sciatica & Tailbone Pain Relief Memory Foam Firm Coccyx Pad for Long Sitting, for Office Chair, Gaming Chair and Car Seat Upgrade',NULL,'B0B5RDC71M','https://m.media-amazon.com/images/I/71HxhCydvLL._AC_UY218_.jpg',1823,4.3,'$31.13','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NzczMjI2Nzc4NzcxNzE3OjE3MDMwMjA0Njc6c3BfbXRmOjIwMDA3NTkzMzE2MDk5ODo6MDo6&url=%2FBenazcap-Cushion-Pressure-Sciatica-Tailbone%2Fdp%2FB0B5RDC71M%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020467%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',52,'2023-12-19 15:14:28.333634-06','2023-12-19 15:14:28.333634-06','www.amazon.com'),
+ (3973,'Electronic Accessories Case, Universal Cable Cord Holder Organizer / Electronic Case, Waterproof Portable Cable Organizer Bag, USB Flash Drives Bag, Cable case Bag, USB Case Organizer,USB Charger Bag',NULL,'B097BRZJVQ','https://m.media-amazon.com/images/I/71ctODtgw8S._AC_UY218_.jpg',5596,4.4,'$6.65','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CAOODKDK-Electronic-Accessories-OrganizerElectronic-Waterproof/dp/B097BRZJVQ/ref=sr_1_13?keywords=computer+accessories&qid=1703020467&sr=8-13',52,'2023-12-19 15:14:28.340363-06','2023-12-19 15:14:28.340363-06','www.amazon.com'),
+ (3974,'Baseus USB C Hub, 4K@60Hz HDMI USB C Docking Station, 7 in 1 USB Hub with 3 USB-A 5Gbps, PD 100W, TF/SD Card Reader, USB C Adapter Compatible for iPhone 15/Mac/Dell/Acer/HP/ASUS/Steam Deck/Rog Ally',NULL,'B0C85759QD','https://m.media-amazon.com/images/I/71L42CoODhL._AC_UY218_.jpg',498,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Baseus-Docking-Station-Adapter-Compatible/dp/B0C85759QD/ref=sr_1_14?keywords=computer+accessories&qid=1703020467&sr=8-14',52,'2023-12-19 15:14:28.346674-06','2023-12-19 15:14:28.346674-06','www.amazon.com'),
+ (3976,'Computer Speakers, Desktop Speakers with 6 Colorful RGB Lights, Volume Control Stereo Bass PC Speakers, USB Powered Subwoofer Gaming Speakers w/3.5mm Aux Cable for PC Monitor Laptop Tablet Phone',NULL,'B0BZZ41652','https://m.media-amazon.com/images/I/61ROQtzmEzL._AC_UY218_.jpg',592,4.5,'$26.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Computer-Speakers-Desktop-Colorful-Subwoofer/dp/B0BZZ41652/ref=sr_1_16?keywords=computer+accessories&qid=1703020467&sr=8-16',52,'2023-12-19 15:14:28.359548-06','2023-12-19 15:14:28.359548-06','www.amazon.com'),
+ (3977,'ODISTAR Desktop Vacuum Cleaner,Mini Table dust Sweeper Energy Saving,High Endurance up to 400 mins,Cordless&360º Rotatable Design for Cleaning Hairs,Crumbs,Computer Keyboard of Gifts for Kids (Black)',NULL,'B082D4XXJJ','https://m.media-amazon.com/images/I/41LrBEZmLkL._AC_UY218_.jpg',2247,4.3,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NzczMjI2Nzc4NzcxNzE3OjE3MDMwMjA0Njc6c3BfbXRmOjIwMDAyNjI0MTI0Mjg5ODo6MDo6&url=%2FODISTAR-Endurance-Cordless-Rotatable-Cleaning%2Fdp%2FB082D4XXJJ%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020467%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',52,'2023-12-19 15:14:28.366248-06','2023-12-19 15:14:28.366248-06','www.amazon.com'),
+ (3978,'Large RGB Gaming Mouse Pad -15 Light Modes Touch Control Extended Soft Computer Keyboard Mat Non-Slip Rubber Base for Gamer Esports Pros 31.5X11.8 in',NULL,'B09M3R13NQ','https://m.media-amazon.com/images/I/71TBg3aD0gL._AC_UY218_.jpg',3438,4.6,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Extended-Computer-Keyboard-Non-Slip-31-5X11-8/dp/B09M3R13NQ/ref=sr_1_18?keywords=computer+accessories&qid=1703020467&sr=8-18',52,'2023-12-19 15:14:28.374135-06','2023-12-19 15:14:28.374135-06','www.amazon.com'),
+ (3979,'Leather Desk Pad Protector,Mouse Pad/Mat, Non-Slip PU Leather Desk Blotter for Laptop,Waterproof Desk Writing Pad for Office and Home (31.5" x 15.7",Olive Green)',NULL,'B08NB7RZB7','https://m.media-amazon.com/images/I/71miLdyaA7L._AC_UY218_.jpg',71164,4.7,'$11.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Leather-Protector-Non-Slip-Blotter-Waterproof/dp/B08NB7RZB7/ref=sr_1_19?keywords=computer+accessories&qid=1703020467&sr=8-19',52,'2023-12-19 15:14:28.381075-06','2023-12-19 15:14:28.381075-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3980,'Simple Trending 2 Tier Metal Monitor Stand Monitor riser and Computer Desk Organizer with Drawer and Pen Holder for Laptop, Computer, iMac, Black',NULL,'B088NHGC48','https://m.media-amazon.com/images/I/81jncrTlOCL._AC_UY218_.jpg',1991,4.7,'$33.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Simple-Trending-Organizer-Anti-Slip-Computer/dp/B088NHGC48/ref=sr_1_20?keywords=computer+accessories&qid=1703020467&sr=8-20',52,'2023-12-19 15:14:28.388047-06','2023-12-19 15:14:28.388047-06','www.amazon.com'),
+ (3981,'Gaming Headphone Stand PC Accessories - RGB Headset Stand with 2 USB Charger, Cool LED Headphone Holder PC Gaming Accessories Gift for Boys Men Gamers, Computer Game Hardware for Desk',NULL,'B0CHJQ6XQ5','https://m.media-amazon.com/images/I/71YyxJDEqSL._AC_UY218_.jpg',86,4.3,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Gaming-Headphone-Stand-PC-Accessories/dp/B0CHJQ6XQ5/ref=sr_1_21?keywords=computer+accessories&qid=1703020467&sr=8-21',52,'2023-12-19 15:14:28.394759-06','2023-12-19 15:14:28.394759-06','www.amazon.com'),
+ (3982,'BAGAIL 4 Set/5 Set/6 Set Compression Packing Cubes Travel Accessories Expandable Packing Organizers',NULL,'B07XLFXJ7D','https://m.media-amazon.com/images/I/61TNS6K2LEL._AC_UY218_.jpg',18956,4.6,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NzczMjI2Nzc4NzcxNzE3OjE3MDMwMjA0Njc6c3BfYnRmOjIwMDAyNDIwNzYwMjcxMTo6MDo6&url=%2FBagail-Compression-Packing-Expandable-Organizers%2Fdp%2FB07XLFXJ7D%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020467%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',52,'2023-12-19 15:14:28.400794-06','2023-12-19 15:14:28.400794-06','www.amazon.com'),
+ (3983,'ZARIMI Compressed air Duster - Keyboard Cleaner for Office no Canned Reusable Good Replacement Can Electric 91000RPM Cordless air Duster pc 7600mAh -pc Cleaning-air Blower-car dusters-Electric',NULL,'B0B4S5P1H8','https://aax-us-iad.amazon.com/e/loi/imp?b=JG0vo49aumbnC26wFUf5vKoAAAGMg-4UaAEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICC9EBoT',3568,4.3,'$55.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RG0vo49aumbnC26wFUf5vKoAAAGMg-4UMAEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICC9EBoT/https://www.amazon.com/ZARIMI-Compressed-air-Duster-dusters-Electric/dp/B0B4S5P1H8/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b%3Aamzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&cv_ct_cx=computer+accessories&keywords=computer+accessories&pd_rd_i=B0B4S5P1H8&pd_rd_r=3a849c65-de2a-4be5-915f-b76d45e0295d&pd_rd_w=IADA7&pd_rd_wg=GaXZo&pf_rd_p=e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&pf_rd_r=VVGBRE0SHQGHCGDXZSNK&qid=1703020467&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-a61ee601-6e56-4862-a8a2-1d3da5a5406f',52,'2023-12-19 15:14:28.409424-06','2023-12-19 15:14:28.409424-06','www.amazon.comhttps:'),
+ (4050,'adidas',NULL,'B08N5NCR6G','https://m.media-amazon.com/images/I/71Ap6d8QO5S._AC_UL320_.jpg',6583,4.5,'$46.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Ownthegame-Basketball-Black-Carbon/dp/B08N5NCR6G/ref=sr_1_40?keywords=men%27s+shoes&qid=1703020483&sr=8-40',53,'2023-12-19 15:14:45.007823-06','2023-12-19 15:14:45.007823-06','www.amazon.com'),
+ (3984,'Under Desk Cable Management Tray,MOOACE Set of 2 Extendable Cord Organizer for Desk 14.1-25.6 inches,No Drill Desk Cable Management Tray with Wire Organizer and Adhesive Screw for Hanging Wall,Black',NULL,'B0C49LR8QG','https://m.media-amazon.com/images/I/61Jk11hu8HL._AC_UY218_.jpg',29,4.7,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODc3ODM0NzI2MjIxNzE3OjE3MDMwMjA0NzU6c3BfYXRmX25leHQ6MzAwMDg0Nzg4NDk0MDAyOjowOjo&url=%2FManagement-MOOACE-Extendable-Organizer-14-1-25-6%2Fdp%2FB0C49LR8QG%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020475%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',52,'2023-12-19 15:14:36.584504-06','2023-12-19 15:14:36.584504-06','www.amazon.com'),
+ (3985,'SMNICE Power Strip with USB, Surge Protector Flat Plug with 8 Widely Spaced Outlets and 6 USB Ports, 5ft Extension Cord Wall Mountable for Smartphone Tablet Laptop Computer Multiple Devices',NULL,'B0BBV7VZGC','https://m.media-amazon.com/images/I/61QF+eodS7L._AC_UY218_.jpg',1382,4.7,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODc3ODM0NzI2MjIxNzE3OjE3MDMwMjA0NzU6c3BfYXRmX25leHQ6MjAwMDkzNTM2NDM0NDk4OjowOjo&url=%2FSMNICE-Protector-Extension-Mountable-Smartphone%2Fdp%2FB0BBV7VZGC%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020475%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',52,'2023-12-19 15:14:36.602547-06','2023-12-19 15:14:36.602547-06','www.amazon.com'),
+ (3986,'SHOWPIN 122 in 1 Precision Computer Screwdriver Kit, Laptop Screwdriver Sets with 101 Magnetic Drill Bits, Electronics Tool Kit Compatible for Tablet, PC, iPhone, PS4 Repair',NULL,'B0822FS7Z6','https://m.media-amazon.com/images/I/81oN38OAm0L._AC_UY218_.jpg',4704,4.7,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Computer-Repair-Magnetic-Screwdriver-Precision/dp/B0822FS7Z6/ref=sr_1_19?keywords=computer+accessories&qid=1703020475&sr=8-19',52,'2023-12-19 15:14:36.609029-06','2023-12-19 15:14:36.609029-06','www.amazon.com'),
+ (3987,'ErGear Dual Monitor Desk Mount, Fully Adjustable Dual Monitor Arm for 2 Computer Screens up to 32 inch, Heavy Duty Dual Monitor Stand for Desk, Holds up to 17.6 lbs per Arm, EGCM1',NULL,'B082MLVXRR','https://m.media-amazon.com/images/I/61zSbH7KWFL._AC_UY218_.jpg',16951,4.4,'$29.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Heavy-Duty-Adjustable-Computer-Monitors-EGCM1/dp/B082MLVXRR/ref=sr_1_20?keywords=computer+accessories&qid=1703020475&sr=8-20',52,'2023-12-19 15:14:36.615279-06','2023-12-19 15:14:36.615279-06','www.amazon.com'),
+ (3988,'LORYERGO Laptop Stand, Ergonomic Computer Stand Laptop Riser for Desk, Laptop Stand Desk Holder Compatible with Most 10-15.6” Laptops, Silver',NULL,'B09C89MJB9','https://m.media-amazon.com/images/I/61srHVHN2GL._AC_UY218_.jpg',5036,4.7,'$15.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LORYERGO-Laptop-Stand-Ergonomic-Compatible/dp/B09C89MJB9/ref=sr_1_21?keywords=computer+accessories&qid=1703020475&sr=8-21',52,'2023-12-19 15:14:36.621997-06','2023-12-19 15:14:36.621997-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3989,'PC Gaming Headphone Headset Holder Hanger Hook, HORUMP Dual Headphone Stand Under Desk with 5 Ports USB Charging Station, Suitable for Gamer Earphone Accessories as Boyfriend, Son, Husband Gifts',NULL,'B0991PS5NK','https://m.media-amazon.com/images/I/61PRhYizhGL._AC_UY218_.jpg',671,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HORUMP-Headphone-Charger-Charging-Earphone/dp/B0991PS5NK/ref=sr_1_22?keywords=computer+accessories&qid=1703020475&sr=8-22',52,'2023-12-19 15:14:36.628461-06','2023-12-19 15:14:36.628461-06','www.amazon.com'),
+ (3990,'COLORCORAL Cleaning Gel Universal Dust Cleaner for PC Keyboard Cleaning Car Detailing Laptop Dusting Home and Office Electronics Cleaning Kit Computer Dust Remover from 160G',NULL,'B07GW9TJ3G','https://m.media-amazon.com/images/I/714s4ksW5GL._AC_UY218_.jpg',54050,4.1,'$8.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keyboard-Universal-Keyboards-Calculators-ColorCoral/dp/B07GW9TJ3G/ref=sr_1_24?keywords=computer+accessories&qid=1703020475&sr=8-24',52,'2023-12-19 15:14:36.634341-06','2023-12-19 15:14:36.634341-06','www.amazon.com'),
+ (3991,'StepLively Foot Rest for Under Desk at Work, Comfortable Foot Stool with 2 Adjustable Heights, Footrest with Washable Cover, for Back & Hip Pain Relief, Suitable for Office, Home and Car (Black)',NULL,'B0C2KLLJPD','https://m.media-amazon.com/images/I/61AjtN2tkFL._AC_UY218_.jpg',596,4.5,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/StepLively-Comfortable-Adjustable-Footrest-Washable/dp/B0C2KLLJPD/ref=sr_1_25?keywords=computer+accessories&qid=1703020475&sr=8-25',52,'2023-12-19 15:14:36.640683-06','2023-12-19 15:14:36.640683-06','www.amazon.com'),
+ (3992,'Keyboard Cleaning Kit Laptop Cleaner, 10-in-1 Computer Screen Cleaning Brush Tool, Multi-Function PC Electronic Cleaner Kit Spray for iPad iPhone Pro, Earbuds, Camera Monitor, All-in-One with Patent',NULL,'B0C2VBXRYG','https://m.media-amazon.com/images/I/71AJth10-BL._AC_UY218_.jpg',3217,4.6,'$13.57','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keyboard-Cleaning-Computer-Multi-Function-Electronic/dp/B0C2VBXRYG/ref=sr_1_26?keywords=computer+accessories&qid=1703020475&sr=8-26',52,'2023-12-19 15:14:36.646494-06','2023-12-19 15:14:36.646494-06','www.amazon.com'),
+ (3993,'Fesciory 4 Pack Keyboard Cleaner, Dust Cleaning Gel with 5 Keyboard Cleaning Kit, Universal Car Cleaning Gel for Car Vent, Detailing Cleaning Gel Putty for Car Dash, Printers, Calculators, Speakers',NULL,'B08Y5JFPFG','https://m.media-amazon.com/images/I/812yTvcjUHL._AC_UY218_.jpg',3126,4.1,'$13.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODc3ODM0NzI2MjIxNzE3OjE3MDMwMjA0NzU6c3BfbXRmOjIwMDA1ODAzNjY3MDE1MTo6MDo6&url=%2FKeyboard-Gel-Universal-Detailing-Calculators%2Fdp%2FB08Y5JFPFG%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020475%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',52,'2023-12-19 15:14:36.652111-06','2023-12-19 15:14:36.652111-06','www.amazon.com'),
+ (3994,'WALI Dual LCD Monitor Fully Adjustable Desk Mount Stand Fits Two Screens up to 27 inch, 22 lbs. Weight Capacity per Arm (M002), Black',NULL,'B018MSDG84','https://m.media-amazon.com/images/I/61vA8MvkGQL._AC_UY218_.jpg',13213,4.5,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODc3ODM0NzI2MjIxNzE3OjE3MDMwMjA0NzU6c3BfbXRmOjMwMDA0MDY0NTk5MzYwMjo6MDo6&url=%2FWALI-Monitor-Adjustable-Capacity-M002%2Fdp%2FB018MSDG84%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020475%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',52,'2023-12-19 15:14:36.658431-06','2023-12-19 15:14:36.658431-06','www.amazon.com'),
+ (3995,'SUPERDANNY LED Desk Lamp for Office Home, Eye-Caring Desk Light with Adjustable Gooseneck, 12W Touch Control Dimmable Brightness, Architect Clamp Lamp with USB Adapter for Reading Study Workbench',NULL,'B0C9GRJGR7','https://m.media-amazon.com/images/I/71o9Kz0V9QL._AC_UY218_.jpg',224,4.6,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SUPERDANNY-Eye-Caring-Adjustable-Gooseneck-Brightness/dp/B0C9GRJGR7/ref=cs_sr_dp?keywords=computer+accessories&qid=1703020475&sr=8-29',52,'2023-12-19 15:14:36.66396-06','2023-12-19 15:14:36.66396-06','www.amazon.com'),
+ (3996,'USB 3.0 Hub, VIENON 4-Port USB Hub USB Splitter USB Expander for Laptop, Xbox, Flash Drive, HDD, Console, Printer, Camera,Keyborad, Mouse',NULL,'B09MLRPTT2','https://m.media-amazon.com/images/I/51MiG9+u4lL._AC_UY218_.jpg',9735,4.5,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Extender-Splitter-MacBook-Chromebook-Pixelbook/dp/B09MLRPTT2/ref=sr_1_30?keywords=computer+accessories&qid=1703020475&sr=8-30',52,'2023-12-19 15:14:36.669935-06','2023-12-19 15:14:36.669935-06','www.amazon.com'),
+ (3997,'Compressed Air Duster Keyboard Cleaner-Cordless Electric Air Duster for Computer PC 110000RPM Canned Air Blower Spray Can Car Duster Cleaning',NULL,'B0C3VJPYQP','https://m.media-amazon.com/images/I/71AeQB0bZxL._AC_UY218_.jpg',226,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Anraye-CV15-BP-Compressed-Air-Duster-Keyboard-Cleaner-Cordless-Electric-Air-Duster-for-Computer-PC-Canned-Air-Blower-Spray-Can-Car-Duster-Cleaning-Dust-Off/dp/B0C3VJPYQP/ref=sr_1_31?keywords=computer+accessories&qid=1703020475&sr=8-31',52,'2023-12-19 15:14:36.676864-06','2023-12-19 15:14:36.676864-06','www.amazon.com'),
+ (3998,'Lamicall Foldable Phone Stand for Desk - Height Adjustable Cell Phone Holder Portable Cellphone Cradle Desktop Dock Compatible with iPhone 15 14 13 Pro Max Mini, 12 11 XR X 8 7 6 Plus SE, Smartphone',NULL,'B09MCKK9NX','https://m.media-amazon.com/images/I/61cHbjMo7IL._AC_UY218_.jpg',17744,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Lamicall-Foldable-Phone-Stand-Desk/dp/B09MCKK9NX/ref=sr_1_32?keywords=computer+accessories&qid=1703020475&sr=8-32',52,'2023-12-19 15:14:36.684093-06','2023-12-19 15:14:36.684093-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (3999,'PC Gaming Headset Headphone Hook Holder Hanger Mount, Headphones Stand with Adjustable & Rotating Arm Clamp, Under Desk Design, Universal Fit, Built in Cable Clip Organizer EURPMASK',NULL,'B07BVK2FQW','https://m.media-amazon.com/images/I/616qQCQHs2L._AC_UY218_.jpg',26593,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Headphone-Headphones-Adjustable-Universal-EURPMASK/dp/B07BVK2FQW/ref=sr_1_33?keywords=computer+accessories&qid=1703020475&sr=8-33',52,'2023-12-19 15:14:36.691757-06','2023-12-19 15:14:36.691757-06','www.amazon.com'),
+ (4000,'PASOW 50pcs Cable Ties Reusable Fastening Wire Organizer Cord Rope Holder 7 Inch (Black)',NULL,'B0154MS9Q0','https://m.media-amazon.com/images/I/71vOgb6rIoL._AC_UY218_.jpg',25380,4.7,'$5.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pasow-Reusable-Fastening-Organizer-Holder/dp/B0154MS9Q0/ref=sr_1_34?keywords=computer+accessories&qid=1703020475&sr=8-34',52,'2023-12-19 15:14:36.701262-06','2023-12-19 15:14:36.701262-06','www.amazon.com'),
+ (4001,'Power Strip, SUPERDANNY Surge Protector with 22 AC Outlets and 6 USB Charging Ports, 1875W/15A, 2100 Joules, 6.5Ft Flat Plug Heavy Duty Extension Cord for Home, Office, Dorm, Gaming Room, Black',NULL,'B08Z2ZKVXX','https://m.media-amazon.com/images/I/71bPzJg1JoL._AC_UY218_.jpg',7679,4.8,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SUPERDANNY-Protector-Outlets-Charging-Extension/dp/B08Z2ZKVXX/ref=sr_1_35?keywords=computer+accessories&qid=1703020475&sr=8-35',52,'2023-12-19 15:14:36.708267-06','2023-12-19 15:14:36.708267-06','www.amazon.com'),
+ (4002,'N NOROCME 192 PCS Cable Management Kit 4 Wire Organizer Sleeve,11 Cable Holder,35Cord Clips 10+2 Roll Cable Organizer Straps and 100 Fastening Cable Ties for Computer TV Under Desk, black,clear',NULL,'B0B687J37D','https://m.media-amazon.com/images/I/81F7bTfj+4L._AC_UY218_.jpg',2598,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Management-Organizer-Sleeve-Fastening-Computer/dp/B0B687J37D/ref=sr_1_36?keywords=computer+accessories&qid=1703020475&sr=8-36',52,'2023-12-19 15:14:36.714863-06','2023-12-19 15:14:36.714863-06','www.amazon.com'),
+ (4003,'TRZLIFE Desk Vacuum Cleaner, Upgraded Mini Table Vacuum Improved Details Higher Suction More Durable Rechargeable Energy Saving Mini Vac Sucks up Tiny Items Crumbs Flakes for Desktop Drawer Countertop',NULL,'B08V91626C','https://m.media-amazon.com/images/I/71uWfO8AcaL._AC_UY218_.jpg',1427,4.3,'$18.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODc3ODM0NzI2MjIxNzE3OjE3MDMwMjA0NzU6c3BfYnRmOjIwMDA2NjQzMzg0MDE1MTo6MDo6&url=%2FTRZLIFE-Cleaner%25EF%25BC%258CMini-Endurance-Stronger-Rotatable%2Fdp%2FB08V91626C%2Fref%3Dsr_1_38_sspa%3Fkeywords%3Dcomputer%2Baccessories%26qid%3D1703020475%26sr%3D8-38-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9idGY%26psc%3D1',52,'2023-12-19 15:14:36.721788-06','2023-12-19 15:14:36.721788-06','www.amazon.com'),
+ (4004,'USB C Docking Station Dual Monitor for Dell/HP/Lenovo/Surface Laptop, 14 in 1 Triple Display Hub Multiple Adapter, Dongle with 2 HDMI 4K+VGA+5 Port+100W PD Charger+Ethernet+SD/TF+Audio',NULL,'B09WDCH35N','https://aax-us-iad.amazon.com/e/loi/imp?b=JHG2rwj8PTxfS1PGfFpOm0cAAAGMg-42cwEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICBxdbTt',2976,4.1,'$55.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RHG2rwj8PTxfS1PGfFpOm0cAAAGMg-42QQEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICBxdbTt/https://www.amazon.com/Docking-Station-Monitor-Multiple-Ethernet/dp/B09WDCH35N/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=computer+accessories&keywords=computer+accessories&pd_rd_i=B09WDCH35N&pd_rd_r=47595611-18b9-4e09-8833-7a48d9718be9&pd_rd_w=bGwkl&pd_rd_wg=t4Fyc&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=J6JCMFT3ZX5FDJPKVKGV&qid=1703020475&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-17-48f7baba-8e26-45f3-8811-e1a601ad20bf',52,'2023-12-19 15:14:36.728348-06','2023-12-19 15:14:36.728348-06','www.amazon.comhttps:'),
+ (4005,'VILOCY',NULL,'B0BZSBKRN3','https://m.media-amazon.com/images/I/81S-ZjeSElL._AC_UL320_.jpg',3612,4.4,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfYXRmOjIwMDE2MDEzOTIwNjk5ODo6MDo6&url=%2FVILOCY-Sneakers-Lightweight-Comfortable-Breathable%2Fdp%2FB0BZSBKRN3%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',53,'2023-12-19 15:14:44.637057-06','2023-12-19 15:14:44.637057-06','www.amazon.com'),
+ (4006,'Skechers',NULL,'B0756BS917','https://m.media-amazon.com/images/I/71J7UawwfxL._AC_UL320_.jpg',33209,4.6,'$49.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Classic-Fit-Delson-Camden-Sneaker-black/dp/B0756BS917/ref=sr_1_2?keywords=men%27s+shoes&qid=1703020483&sr=8-2',53,'2023-12-19 15:14:44.647113-06','2023-12-19 15:14:44.647113-06','www.amazon.com'),
+ (4007,'Under Armour',NULL,'B087Z1Y7S7','https://m.media-amazon.com/images/I/410-L0vF3+L._AC_UL320_.jpg',55247,4.6,'$49.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Charged-Assert-Black/dp/B087Z1Y7S7/ref=sr_1_3?keywords=men%27s+shoes&qid=1703020483&sr=8-3',53,'2023-12-19 15:14:44.655377-06','2023-12-19 15:14:44.655377-06','www.amazon.com'),
+ (4008,'Under Armour',NULL,'B09XBV3828','https://m.media-amazon.com/images/I/61VrbOtzDXL._AC_UL320_.jpg',1814,4.5,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Charged-Assert-Running/dp/B09XBV3828/ref=sr_1_4?keywords=men%27s+shoes&qid=1703020483&sr=8-4',53,'2023-12-19 15:14:44.662829-06','2023-12-19 15:14:44.662829-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4583,'Travel Power Strip, NTONPOWER 3 Outlets 3 USB Portable Desktop Charging Station Short Extension Cord 15 inches for Office, Home, Hotels, Cruise Ship, Nightstand, White',NULL,'B073ZDH43X','https://m.media-amazon.com/images/I/61eeYMMCzZL._AC_UL320_.jpg',9745,4.6,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Travel-Power-Strip-NTONPOWER-Nightstand/dp/B073ZDH43X/ref=sr_1_91?keywords=travel+accessories&qid=1703020686&sr=8-91',57,'2023-12-19 15:18:08.076317-06','2023-12-19 15:18:08.076317-06','www.amazon.com'),
+ (4051,'Columbia',NULL,'B089FCC5KS','https://m.media-amazon.com/images/I/61wRs38mw1L._AC_UL320_.jpg',861,4.5,'$57.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Columbia-Tamiami-Slate-Light-Orange/dp/B089FCC5KS/ref=sr_1_41?keywords=men%27s+shoes&qid=1703020483&sr=8-41',53,'2023-12-19 15:14:45.014386-06','2023-12-19 15:14:45.014386-06','www.amazon.com'),
+ (4052,'Skechers',NULL,'B01L04GQL6','https://m.media-amazon.com/images/I/81QqLikuSqL._AC_UL320_.jpg',38920,4.6,'$40.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Expected-Avillo-Slip-Loafer/dp/B01L04GQL6/ref=sr_1_42?keywords=men%27s+shoes&qid=1703020483&sr=8-42',53,'2023-12-19 15:14:45.021351-06','2023-12-19 15:14:45.021351-06','www.amazon.com'),
+ (4010,'VILOCY',NULL,'B0B3TB6QJC','https://m.media-amazon.com/images/I/81NmU6rAQ1L._AC_UL320_.jpg',3612,4.4,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NzY2NDMyOTg4NjMzNzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA3MzgyNTgwMTU5ODo6MDo6&url=%2FVILOCY-Sneakers-Oxfords-Business-Lightweight%2Fdp%2FB0B3TB6QJC%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0B3TB6QJC%26pd_rd_r%3Dfef79979-9e10-4c41-93df-66264ef487bb%26pd_rd_w%3DKeXdG%26pd_rd_wg%3DCfwmO%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:44.680584-06','2023-12-19 15:14:54.141435-06','www.amazon.com'),
+ (4011,'Jousen',NULL,'B07THGXGVL','https://m.media-amazon.com/images/I/71bzAXD2jAL._AC_UL320_.jpg',2713,4.4,'$48.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NzY2NDMyOTg4NjMzNzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAyMzQyNDkzOTAwMjo6MTo6&url=%2FJOUSEN-Oxford-Lightweight-Classic-Casual%2Fdp%2FB07THGXGVL%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB07THGXGVL%26pd_rd_r%3Dfef79979-9e10-4c41-93df-66264ef487bb%26pd_rd_w%3DKeXdG%26pd_rd_wg%3DCfwmO%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:44.687485-06','2023-12-19 15:14:44.687485-06','www.amazon.com'),
+ (4012,'VAMJAM',NULL,'B08FQRW2GK','https://m.media-amazon.com/images/I/71C4-3Ksp-L._AC_UL320_.jpg',7680,4.1,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NzY2NDMyOTg4NjMzNzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA4OTg5MTc0MzgzMTo6Mjo6&url=%2FYDB-Lightweight-Breathable-Athletic-Sneakers%2Fdp%2FB08FQRW2GK%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB08FQRW2GK%26pd_rd_r%3Dfef79979-9e10-4c41-93df-66264ef487bb%26pd_rd_w%3DKeXdG%26pd_rd_wg%3DCfwmO%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:44.695372-06','2023-12-19 15:14:44.695372-06','www.amazon.com'),
+ (4013,'Kkyc',NULL,'B08PQM34J1','https://m.media-amazon.com/images/I/818qTgbuvOL._AC_UL320_.jpg',1448,4.3,'$40.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NzY2NDMyOTg4NjMzNzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDEwMzAzNzYyNDYwMjo6Mzo6&url=%2FKkyc-Shoes-Comfortable-Casual-Light%2Fdp%2FB08PQM34J1%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB08PQM34J1%26pd_rd_r%3Dfef79979-9e10-4c41-93df-66264ef487bb%26pd_rd_w%3DKeXdG%26pd_rd_wg%3DCfwmO%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:44.701222-06','2023-12-19 15:14:44.701222-06','www.amazon.com'),
+ (4009,'VILOCY',NULL,'B0BM3PRQF9','https://m.media-amazon.com/images/I/81TLZ0RTLRL._AC_UL320_.jpg',681,4.5,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2NzY2NDMyOTg4NjMzNzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE3NzYyNzQ4NTU5ODo6NDo6&url=%2FOxfords-Business-Comfortable-Breathable-Lightweight%2Fdp%2FB0BM3PRQF9%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0BM3PRQF9%26pd_rd_r%3Dfef79979-9e10-4c41-93df-66264ef487bb%26pd_rd_w%3DKeXdG%26pd_rd_wg%3DCfwmO%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:44.671577-06','2023-12-19 15:14:44.707961-06','www.amazon.com'),
+ (4014,'Bruno Marc',NULL,'B07ZLSTZGB','https://m.media-amazon.com/images/I/714vviCL5XL._AC_UL320_.jpg',10744,4.6,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Sneakers-Lightweight-Grand-01/dp/B07ZLSTZGB/ref=sr_1_5?keywords=men%27s+shoes&qid=1703020483&sr=8-5',53,'2023-12-19 15:14:44.713953-06','2023-12-19 15:14:44.713953-06','www.amazon.com'),
+ (4015,'Merrell',NULL,'B000B2IUFO','https://m.media-amazon.com/images/I/61zSN8scjNL._AC_UL320_.jpg',34916,4.6,'$57.86','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Merrell-Mens-Jungle-Slip-Gunsmoke/dp/B000B2IUFO/ref=sr_1_6?keywords=men%27s+shoes&qid=1703020483&sr=8-6',53,'2023-12-19 15:14:44.720042-06','2023-12-19 15:14:44.720042-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4016,'Skechers',NULL,'B00D881IBG','https://m.media-amazon.com/images/I/81d5u6zG-EL._AC_UL320_.jpg',75634,4.4,'$51.84','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Afterburn-fashion-sneakers-Black/dp/B00D881IBG/ref=sr_1_7?keywords=men%27s+shoes&qid=1703020483&sr=8-7',53,'2023-12-19 15:14:44.727132-06','2023-12-19 15:14:44.727132-06','www.amazon.com'),
+ (4017,'Clarks',NULL,'B004DCSYZE','https://m.media-amazon.com/images/I/71NjblvJxoL._AC_UL320_.jpg',23768,4.3,'$43.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Mens-Bushacre-Beeswax-12/dp/B004DCSYZE/ref=sr_1_8?keywords=men%27s+shoes&qid=1703020483&sr=8-8',53,'2023-12-19 15:14:44.732936-06','2023-12-19 15:14:44.732936-06','www.amazon.com'),
+ (4018,'Steve Madden',NULL,'B01LW2SL7R','https://m.media-amazon.com/images/I/813UuOjWfZL._AC_UL320_.jpg',6115,4.3,'$49.92','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Steve-Madden-Fashion-Sneaker-Fabric/dp/B01LW2SL7R/ref=sr_1_9?keywords=men%27s+shoes&qid=1703020483&sr=8-9',53,'2023-12-19 15:14:44.739894-06','2023-12-19 15:14:44.739894-06','www.amazon.com'),
+ (4019,'Dr. Scholl''s Shoes',NULL,'B07TWCKYGH','https://m.media-amazon.com/images/I/71pFL31UYqL._AC_UL320_.jpg',4487,4.3,'$65.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Shoes-Mens-Oxford/dp/B07TWCKYGH/ref=sr_1_10?keywords=men%27s+shoes&qid=1703020483&sr=8-10',53,'2023-12-19 15:14:44.74996-06','2023-12-19 15:14:44.74996-06','www.amazon.com'),
+ (4020,'Vostey',NULL,'B0CB4CKCQB','https://m.media-amazon.com/images/I/81vt-LqQ6FL._AC_UL320_.jpg',23,4.7,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjMwMDA4MDk1MDg0ODgwMjo6MDo6&url=%2FVostey-Loafers-Slip-ons-Lightweight-BMY3036%2Fdp%2FB0CB4CKCQB%2Fref%3Dsr_1_11_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.757532-06','2023-12-19 15:14:44.757532-06','www.amazon.com'),
+ (4021,'UMYOGO',NULL,'B07NRYTNXJ','https://m.media-amazon.com/images/I/71Hexq78RTL._AC_UL320_.jpg',37603,4.2,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDA4OTAzNTk1MjY5ODo6MDo6&url=%2FUMYOGO-Athletic-Walking-Running-Sneakers%2Fdp%2FB07NRYTNXJ%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.767373-06','2023-12-19 15:14:44.767373-06','www.amazon.com'),
+ (4022,'SKDOIUL',NULL,'B0C7KWG577','https://m.media-amazon.com/images/I/819P3ge+geL._AC_UL320_.jpg',32,4.3,'$33.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjMwMDAzNTAxNTc3NDcwMjo6MDo6&url=%2FSKDOIUL-Walking-Sneakers-Breathable-Comfort%2Fdp%2FB0C7KWG577%2Fref%3Dsr_1_13_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-13-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.774939-06','2023-12-19 15:14:44.774939-06','www.amazon.com'),
+ (4024,'VILOCY',NULL,'B0BKL32VLM','https://aax-us-iad.amazon.com/e/loi/imp?b=JPd_tRa4GPts74ZWhuszg5kAAAGMg-5TKgEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICBoy_lD',3612,4.4,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RPd_tRa4GPts74ZWhuszg5kAAAGMg-5S6wEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICBoy_lD/https://www.amazon.com/VILOCY-Sneakers-Oxfords-Business-Lightweight/dp/B0BKL32VLM/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=men%27s+shoes&keywords=men%27s+shoes&pd_rd_i=B0BKL32VLM&pd_rd_r=fef79979-9e10-4c41-93df-66264ef487bb&pd_rd_w=mcZ5Y&pd_rd_wg=CfwmO&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=PHA3F06ED7ADFY0X79V3&qid=1703020483&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',53,'2023-12-19 15:14:44.79158-06','2023-12-19 15:14:44.79158-06','www.amazon.comhttps:'),
+ (4025,'adidas',NULL,'B096HLGK4V','https://m.media-amazon.com/images/I/71FBY-t7AwL._AC_UL320_.jpg',1678,4.6,'$56.22','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Spikeless-Shoes-Footwear-White/dp/B096HLGK4V/ref=sr_1_15?keywords=men%27s+shoes&qid=1703020483&sr=8-15',53,'2023-12-19 15:14:44.798002-06','2023-12-19 15:14:44.798002-06','www.amazon.com'),
+ (4026,'adidas',NULL,'B07ZSCB99R','https://m.media-amazon.com/images/I/71-3MqaCozL._AC_UL320_.jpg',14327,4.7,'$64.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Daily-Skate-Black-White/dp/B07ZSCB99R/ref=sr_1_16?keywords=men%27s+shoes&qid=1703020483&sr=8-16',53,'2023-12-19 15:14:44.809495-06','2023-12-19 15:14:44.809495-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4027,'Clarks',NULL,'B074V67KGJ','https://m.media-amazon.com/images/I/7136WF4PjnL._AC_UL320_.jpg',6602,4.5,'$52.55','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Cotrell-Loafer-Tobacco-Leather/dp/B074V67KGJ/ref=sr_1_17?keywords=men%27s+shoes&qid=1703020483&sr=8-17',53,'2023-12-19 15:14:44.815388-06','2023-12-19 15:14:44.815388-06','www.amazon.com'),
+ (4028,'Reebok',NULL,'B071FSRX53','https://m.media-amazon.com/images/I/71YAz2R2D8L._AC_UL320_.jpg',7826,4.4,'$52.81','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reebok-Workout-Trainer-Carbon-Classic/dp/B071FSRX53/ref=sr_1_18?keywords=men%27s+shoes&qid=1703020483&sr=8-18',53,'2023-12-19 15:14:44.821326-06','2023-12-19 15:14:44.821326-06','www.amazon.com'),
+ (4029,'FRSHANIAH',NULL,'B08R979J5V','https://m.media-amazon.com/images/I/61mY1z+neEL._AC_UL320_.jpg',4730,4.2,'$39.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDE1MzE0MTI0NjM5ODo6MDo6&url=%2FFRSHANIAH-Sneakers-Running-Athletic-Breathable%2Fdp%2FB08R979J5V%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.827465-06','2023-12-19 15:14:44.827465-06','www.amazon.com'),
+ (4030,'Wrezatro',NULL,'B09JBX9LTH','https://m.media-amazon.com/images/I/71UNzuaKlvL._AC_UL320_.jpg',2092,4.1,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDAyMjgzNTU1NTA5ODo6MDo6&url=%2FWrezatro-Walking-Breathable-Running-Sneakers%2Fdp%2FB09JBX9LTH%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.833725-06','2023-12-19 15:14:44.833725-06','www.amazon.com'),
+ (4031,'HHP',NULL,'B0BDFPZS1Z','https://m.media-amazon.com/images/I/71ljMvZMrGL._AC_UL320_.jpg',388,4.4,'$29.91','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjMwMDEwMzg2ODk5NTEwMjo6MDo6&url=%2FHHP-Mens-Running-Shoes-Sneakers%2Fdp%2FB0BDFPZS1Z%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.841139-06','2023-12-19 15:14:44.841139-06','www.amazon.com'),
+ (4032,'Kapsen',NULL,'B092MC6BFZ','https://m.media-amazon.com/images/I/71YQNz3uzyL._AC_UL320_.jpg',2080,4.1,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDEwNTEyNzI0MzYzMTo6MDo6&url=%2FRunning-Walking-Sneakers-Breathable-Trainers%2Fdp%2FB092MC6BFZ%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.851705-06','2023-12-19 15:14:44.851705-06','www.amazon.com'),
+ (4033,'adidas',NULL,'B0BG93GBMP','https://m.media-amazon.com/images/I/71nRAZxGg3L._AC_UL320_.jpg',212,4.6,'$63.71','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Mens-Kaptir-Sneaker-White/dp/B0BG93GBMP/ref=sr_1_23?keywords=men%27s+shoes&qid=1703020483&sr=8-23',53,'2023-12-19 15:14:44.858822-06','2023-12-19 15:14:44.858822-06','www.amazon.com'),
+ (4034,'ASICS',NULL,'B08PL662NN','https://m.media-amazon.com/images/I/51l7n7bEfRL._AC_UL320_.jpg',12272,4.5,'$39.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Gel-Contend-Running-Shoes-Black/dp/B08PL662NN/ref=sr_1_24?keywords=men%27s+shoes&qid=1703020483&sr=8-24',53,'2023-12-19 15:14:44.866081-06','2023-12-19 15:14:44.866081-06','www.amazon.com'),
+ (4035,'Bruno Marc',NULL,'B01N3MAX7M','https://m.media-amazon.com/images/I/81We33yH25L._AC_UL320_.jpg',10167,4.2,'$37.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-RIVERA-01-Black-Oxfords-Sneakers/dp/B01N3MAX7M/ref=sr_1_25?keywords=men%27s+shoes&qid=1703020483&sr=8-25',53,'2023-12-19 15:14:44.875299-06','2023-12-19 15:14:44.875299-06','www.amazon.com'),
+ (4036,'PUMA',NULL,'B08KK9J54W','https://m.media-amazon.com/images/I/81tc6arDvFL._AC_UL320_.jpg',10588,4.5,'$54.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-Mens-Axelion-Running-Black-Castlerock/dp/B08KK9J54W/ref=sr_1_26?keywords=men%27s+shoes&qid=1703020483&sr=8-26',53,'2023-12-19 15:14:44.887025-06','2023-12-19 15:14:44.887025-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4037,'Kapsen',NULL,'B09PN75PF5','https://m.media-amazon.com/images/I/711asHME6pL._AC_UL320_.jpg',1586,4.3,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDA0NTMwNzQ1MjQ5ODo6MDo6&url=%2FKapsen-Running-Breathable-Walking-Sneakers%2Fdp%2FB09PN75PF5%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.896884-06','2023-12-19 15:14:44.896884-06','www.amazon.com'),
+ (4038,'TSIODFO',NULL,'B091JXKZY8','https://m.media-amazon.com/images/I/81S9qXanHKS._AC_UL320_.jpg',3717,4.1,'$36.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjIwMDA3NTIxNDEwMDEyMTo6MDo6&url=%2FSneakers-Fashion-Running-Athletic-Trainers%2Fdp%2FB091JXKZY8%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.904519-06','2023-12-19 15:14:44.904519-06','www.amazon.com'),
+ (4039,'Kricely',NULL,'B0CFF1NTYT','https://m.media-amazon.com/images/I/71QV8eYSQ9L._AC_UL320_.jpg',472,4.1,'$43.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4ODM4Mjc3OTMzNzI1NzE3OjE3MDMwMjA0ODM6c3BfbXRmOjMwMDA2NDM5MjI2NTMwMjo6MDo6&url=%2FKricely-Walking-Breathable-Lightweight-Sneakers%2Fdp%2FB0CFF1NTYT%2Fref%3Dsr_1_29_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020483%26sr%3D8-29-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:44.915823-06','2023-12-19 15:14:44.915823-06','www.amazon.com'),
+ (4040,'Skechers',NULL,'B0864TN1V4','https://m.media-amazon.com/images/I/71rvcOg6-QL._AC_UL320_.jpg',2119,4.6,'$40.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Track-Moulton-Oxford-Black/dp/B0864TN1V4/ref=sr_1_30?keywords=men%27s+shoes&qid=1703020483&sr=8-30',53,'2023-12-19 15:14:44.927038-06','2023-12-19 15:14:44.927038-06','www.amazon.com'),
+ (4058,'Rockport',NULL,'B000W8WVUW','https://m.media-amazon.com/images/I/71T-kM6A9uL._AC_UL320_.jpg',25324,4.3,'$61.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rockport-Mens-Eureka-Walking-Brown/dp/B000W8WVUW/ref=sr_1_49?keywords=men%27s+shoes&qid=1703020483&sr=8-49',53,'2023-12-19 15:14:45.069957-06','2023-12-19 15:14:45.069957-06','www.amazon.com'),
+ (4059,'Under Armour',NULL,'B0BGQQXQYX','https://m.media-amazon.com/images/I/71ucAy2MNcL._AC_UL320_.jpg',9,3.9,'$54.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Charged-Impulse-Running/dp/B0BGQQXQYX/ref=sr_1_50?keywords=men%27s+shoes&qid=1703020483&sr=8-50',53,'2023-12-19 15:14:45.081153-06','2023-12-19 15:14:45.081153-06','www.amazon.com'),
+ (4060,'Dr. Scholl''s Shoes',NULL,'B0CBLDFVQ6','https://m.media-amazon.com/images/I/51aQvNB5pTL._AC_UL320_.jpg',65,4.0,'$29.74','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Scholls-Jeff-Leather-Stacked-Rounded/dp/B0CBLDFVQ6/ref=sr_1_51?keywords=men%27s+shoes&qid=1703020483&sr=8-51',53,'2023-12-19 15:14:45.089034-06','2023-12-19 15:14:45.089034-06','www.amazon.com'),
+ (4061,'Columbia',NULL,'B01015LM5A','https://m.media-amazon.com/images/I/61PAldp2I1L._AC_UL320_.jpg',3336,4.6,'$53.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Columbia-Mens-Bahama-Vent-Gypsy/dp/B01015LM5A/ref=sr_1_53?keywords=men%27s+shoes&qid=1703020483&sr=8-53',53,'2023-12-19 15:14:45.099822-06','2023-12-19 15:14:45.099822-06','www.amazon.com'),
+ (4062,'Bruno Marc',NULL,'B07FCZJSHM','https://m.media-amazon.com/images/I/713e1SamhNL._AC_UL320_.jpg',3141,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-HUTCHINGSON_2-Camel-Oxford/dp/B07FCZJSHM/ref=sr_1_54?keywords=men%27s+shoes&qid=1703020483&sr=8-54',53,'2023-12-19 15:14:45.107754-06','2023-12-19 15:14:45.107754-06','www.amazon.com'),
+ (4063,'Bruno Marc',NULL,'B0C9ZCN5QZ','https://m.media-amazon.com/images/I/71Or1R+gVLL._AC_UL320_.jpg',31,4.7,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Comfortable-Sneakers-SBFS228M-1/dp/B0C9ZCN5QZ/ref=sr_1_55?keywords=men%27s+shoes&qid=1703020483&sr=8-55',53,'2023-12-19 15:14:45.116432-06','2023-12-19 15:14:45.116432-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4064,'Bruno Marc',NULL,'B0CJ8ZLQW6','https://m.media-amazon.com/images/I/811f4yJyvCL._AC_UL320_.jpg',20,4.4,'$37.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Resistant-Restaurant-SBWO2302M/dp/B0CJ8ZLQW6/ref=sr_1_56?keywords=men%27s+shoes&qid=1703020483&sr=8-56',53,'2023-12-19 15:14:45.123736-06','2023-12-19 15:14:45.123736-06','www.amazon.com'),
+ (4065,'PUMA',NULL,'B07FZZ7DJ4','https://m.media-amazon.com/images/I/71UR4AP4hVL._AC_UL320_.jpg',1463,4.5,'$53.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-Mens-Astro-Sneaker-Black-White-teamgold/dp/B07FZZ7DJ4/ref=sr_1_57?keywords=men%27s+shoes&qid=1703020483&sr=8-57',53,'2023-12-19 15:14:45.133252-06','2023-12-19 15:14:45.133252-06','www.amazon.com'),
+ (4066,'Skechers',NULL,'B0755ZRTBN','https://m.media-amazon.com/images/I/81R6Yd9ONTS._AC_UL320_.jpg',15760,4.7,'$44.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Relaxed-Fit-Creston-Moseco-Moccasin-Charcoal/dp/B0755ZRTBN/ref=sr_1_58?keywords=men%27s+shoes&qid=1703020483&sr=8-58',53,'2023-12-19 15:14:45.140995-06','2023-12-19 15:14:45.140995-06','www.amazon.com'),
+ (4067,'Skechers',NULL,'B07FMWZLGW','https://m.media-amazon.com/images/I/61GF68th8tL._AC_UL320_.jpg',41105,4.6,'$44.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Evolution-Ultra-Impeccable-Sneaker-Black/dp/B07FMWZLGW/ref=sr_1_59?keywords=men%27s+shoes&qid=1703020483&sr=8-59',53,'2023-12-19 15:14:45.147088-06','2023-12-19 15:14:45.147088-06','www.amazon.com'),
+ (4068,'Skechers',NULL,'B07W8ZND8G','https://m.media-amazon.com/images/I/81sesU0lM8L._AC_UL320_.jpg',15164,4.5,'$40.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Consistent-Performance-Running-Walking-Sneaker/dp/B07W8ZND8G/ref=sr_1_60?keywords=men%27s+shoes&qid=1703020483&sr=8-60',53,'2023-12-19 15:14:45.154617-06','2023-12-19 15:14:45.154617-06','www.amazon.com'),
+ (4584,'Tide Liquid Travel Sink Packets, 3-Count',NULL,'B000GCS004','https://m.media-amazon.com/images/I/81J9nylIWWL._AC_UL320_.jpg',26852,4.7,'$4.30','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Tide-Travel-Sink-Packets-3-Count/dp/B000GCS004/ref=sr_1_92?keywords=travel+accessories&qid=1703020686&sr=8-92',57,'2023-12-19 15:18:08.081981-06','2023-12-19 15:18:08.081981-06','www.amazon.com'),
+ (4070,'VILOCY',NULL,'B0C1B34D46','https://m.media-amazon.com/images/I/81VegEKuCfL._AC_UL320_.jpg',3612,4.4,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjYyODEzOTEyMTI4NzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNjk0NDY2MTgyOTg6OjA6Og&url=%2FVILOCY-Sneakers-Lightweight-Comfortable-Breathable%2Fdp%2FB0C1B34D46%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0C1B34D46%26pd_rd_r%3D9afc1dce-1e50-4683-ad44-970510d1d5f3%26pd_rd_w%3D35dSe%26pd_rd_wg%3DanDJS%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:45.168325-06','2023-12-19 15:14:45.168325-06','www.amazon.com'),
+ (4071,'VAMJAM',NULL,'B08FR6G1M4','https://m.media-amazon.com/images/I/71C4-3Ksp-L._AC_UL320_.jpg',7680,4.1,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjYyODEzOTEyMTI4NzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwODk4OTE3NDQyMzE6OjE6Og&url=%2FYDB-Lightweight-Breathable-Athletic-Sneakers%2Fdp%2FB08FR6G1M4%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB08FR6G1M4%26pd_rd_r%3D9afc1dce-1e50-4683-ad44-970510d1d5f3%26pd_rd_w%3D35dSe%26pd_rd_wg%3DanDJS%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:45.176193-06','2023-12-19 15:14:45.176193-06','www.amazon.com'),
+ (4094,'SKDOIUL',NULL,'B0946JQ6LY','https://m.media-amazon.com/images/I/81OQaUHx1kS._AC_UL320_.jpg',11120,4.1,'$39.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjIwMDA0NDI3NjI4MDc5ODo6MDo6&url=%2FSKDOIUL-Running-Sneakers-Athletic-Breathable%2Fdp%2FB0946JQ6LY%2Fref%3Dsr_1_66_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-66-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.255101-06','2023-12-19 15:14:54.255101-06','www.amazon.com'),
+ (4585,'Foot Rest,Airplane Footrest Made with Premium Foam,Travel Essentials Head Hammock Portable Travel Footrest Flight Carry-On Foot Rest Adjustable Height Foot Rest Travel Accessories Footrests Hammock',NULL,'B07WDQY2Y9','https://m.media-amazon.com/images/I/61SpQq8dPWL._AC_UL320_.jpg',1106,3.9,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Airplane-Footrest-Adjustable-Accessories-Footrests/dp/B07WDQY2Y9/ref=sr_1_93?keywords=travel+accessories&qid=1703020686&sr=8-93',57,'2023-12-19 15:18:08.087483-06','2023-12-19 15:18:08.087483-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4072,'ENLEN&BENNA',NULL,'B0B185RWSH','https://m.media-amazon.com/images/I/71mztMuCKXL._AC_UL320_.jpg',592,4.4,'$47.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjYyODEzOTEyMTI4NzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNTUxOTk4MDk2OTg6OjI6Og&url=%2FENLEN-BENNA-Loafers-Lightweight-Comfortable%2Fdp%2FB0B185RWSH%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0B185RWSH%26pd_rd_r%3D9afc1dce-1e50-4683-ad44-970510d1d5f3%26pd_rd_w%3D35dSe%26pd_rd_wg%3DanDJS%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:45.182098-06','2023-12-19 15:14:45.182098-06','www.amazon.com'),
+ (4073,'Giniros',NULL,'B0BP25HZVL','https://m.media-amazon.com/images/I/71DvNqa6ddL._AC_UL320_.jpg',901,4.2,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjYyODEzOTEyMTI4NzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxMjk5NTgxMzEzOTg6OjM6Og&url=%2FGiniros-Running-Breathable-Lightweight-Sneakers%2Fdp%2FB0BP25HZVL%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0BP25HZVL%26pd_rd_r%3D9afc1dce-1e50-4683-ad44-970510d1d5f3%26pd_rd_w%3D35dSe%26pd_rd_wg%3DanDJS%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:45.189298-06','2023-12-19 15:14:45.189298-06','www.amazon.com'),
+ (4069,'Jousen',NULL,'B07VCSJD4N','https://m.media-amazon.com/images/I/811DeEQ8NCL._AC_UL320_.jpg',14435,4.3,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NjYyODEzOTEyMTI4NzE3OjE3MDMwMjA0ODM6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwNTk1NjgyNjA2OTg6OjQ6Og&url=%2FJOUSEN-Sneakers-Business-Fashion-Sneaker%2Fdp%2FB07VCSJD4N%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB07VCSJD4N%26pd_rd_r%3D9afc1dce-1e50-4683-ad44-970510d1d5f3%26pd_rd_w%3D35dSe%26pd_rd_wg%3DanDJS%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DPHA3F06ED7ADFY0X79V3%26qid%3D1703020483%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:45.162116-06','2023-12-19 15:14:45.195138-06','www.amazon.com'),
+ (4074,'SKDOIUL',NULL,'B0C7L166DW','https://m.media-amazon.com/images/I/71kIjVWHmML._AC_UL320_.jpg',32,4.3,'$33.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfYXRmX25leHQ6MzAwMDM1MDE1Nzc0NjAyOjowOjo&url=%2FSKDOIUL-Walking-Sneakers-Breathable-Comfort%2Fdp%2FB0C7L166DW%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',53,'2023-12-19 15:14:54.043541-06','2023-12-19 15:14:54.043541-06','www.amazon.com'),
+ (4075,'VAMJAM',NULL,'B08FQS15HW','https://m.media-amazon.com/images/I/71C4-3Ksp-L._AC_UL320_.jpg',7680,4.1,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfYXRmX25leHQ6MjAwMDg5ODkxNzQ0MTMxOjowOjo&url=%2FYDB-Lightweight-Breathable-Athletic-Sneakers%2Fdp%2FB08FQS15HW%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',53,'2023-12-19 15:14:54.073242-06','2023-12-19 15:14:54.073242-06','www.amazon.com'),
+ (4076,'Kapsen',NULL,'B09PN76Y4F','https://m.media-amazon.com/images/I/711asHME6pL._AC_UL320_.jpg',1586,4.3,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfYXRmX25leHQ6MjAwMDQ1MzA3NDUzMjk4OjowOjo&url=%2FKapsen-Running-Breathable-Walking-Sneakers%2Fdp%2FB09PN76Y4F%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',53,'2023-12-19 15:14:54.081207-06','2023-12-19 15:14:54.081207-06','www.amazon.com'),
+ (4077,'WXQ',NULL,'B09YKND6VH','https://m.media-amazon.com/images/I/61m7cJxIPWL._AC_UL320_.jpg',710,4.1,'$30.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfYXRmX25leHQ6MzAwMDM5Mzg4MDc0NTAyOjowOjo&url=%2FWXQ-Running-Comfortable-Lightweight-Breathable%2Fdp%2FB09YKND6VH%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',53,'2023-12-19 15:14:54.091209-06','2023-12-19 15:14:54.091209-06','www.amazon.com'),
+ (4078,'adidas',NULL,'B0BHPS6X5Q','https://m.media-amazon.com/images/I/71lu4fM+A6L._AC_UL320_.jpg',220,4.7,'$52.51','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Racer-Adapt-Sneaker-Black/dp/B0BHPS6X5Q/ref=sr_1_53?keywords=men%27s+shoes&qid=1703020492&sr=8-53',53,'2023-12-19 15:14:54.097408-06','2023-12-19 15:14:54.097408-06','www.amazon.com'),
+ (4079,'Clarks',NULL,'B01N2SBH4J','https://m.media-amazon.com/images/I/61kMEn9L13L._AC_UL320_.jpg',10938,4.5,'$42.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Mens-Tilden-Oxford-Leather/dp/B01N2SBH4J/ref=sr_1_54?keywords=men%27s+shoes&qid=1703020492&sr=8-54',53,'2023-12-19 15:14:54.108572-06','2023-12-19 15:14:54.108572-06','www.amazon.com'),
+ (4080,'Under Armour',NULL,'B0BGQQPCHF','https://m.media-amazon.com/images/I/512P1h2kJxL._AC_UL320_.jpg',6202,4.5,'$57.18','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Charged-Trainer-Varsity/dp/B0BGQQPCHF/ref=sr_1_55?keywords=men%27s+shoes&qid=1703020492&sr=8-55',53,'2023-12-19 15:14:54.114935-06','2023-12-19 15:14:54.114935-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4586,'Steripod Clip-On Toothbrush Protector with Peppermint Essential Oils, Keeps Toothbrush Fresh and Clean, Travel Accessories, Fits Most Manual and Electric Toothbrushes, 2 Count',NULL,'B09SQCMT5G','https://m.media-amazon.com/images/I/71R7norWF5L._AC_UL320_.jpg',2306,4.8,'$5.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Steripod-Toothbrush-Protector-Peppermint-Toothbrushes/dp/B09SQCMT5G/ref=sr_1_94?keywords=travel+accessories&qid=1703020686&sr=8-94',57,'2023-12-19 15:18:08.0941-06','2023-12-19 15:18:08.0941-06','www.amazon.com'),
+ (4095,'HuitJours',NULL,'B0B2P916PC','https://m.media-amazon.com/images/I/41yPMZxfdWL._AC_UL320_.jpg',271,4.3,'$52.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjIwMDExNDUwNDU0NDA5ODo6MDo6&url=%2FHuitJours-Loafer-Colors-Patchwork-Moccasins%2Fdp%2FB0B2P916PC%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.265078-06','2023-12-19 15:14:54.265078-06','www.amazon.com'),
+ (4082,'Pozvnn',NULL,'B0B6R8GFF4','https://m.media-amazon.com/images/I/71K5jAued7L._AC_UL320_.jpg',976,4.2,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NzcxNTkxODU3MTI5NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDExMzY3MzEwMjY5ODo6MDo6&url=%2FPozvnn-Lightweight-Breathable-Athletic-Sneakers%2Fdp%2FB0B6R8GFF4%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0B6R8GFF4%26pd_rd_r%3D55569294-b565-4bf8-8ebc-cf48c0bcc1f9%26pd_rd_w%3DMs38A%26pd_rd_wg%3DN8svP%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:54.131961-06','2023-12-19 15:14:54.131961-06','www.amazon.com'),
+ (4083,'Pozvnn',NULL,'B09MRX6KJL','https://m.media-amazon.com/images/I/61rXgqjlIwL._AC_UL320_.jpg',226,4.4,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NzcxNTkxODU3MTI5NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA3NDg4NDgyNjUwMjo6Mjo6&url=%2FFashion-Sneakers-Running-Athletic-Breathable%2Fdp%2FB09MRX6KJL%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB09MRX6KJL%26pd_rd_r%3D55569294-b565-4bf8-8ebc-cf48c0bcc1f9%26pd_rd_w%3DMs38A%26pd_rd_wg%3DN8svP%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:54.14967-06','2023-12-19 15:14:54.14967-06','www.amazon.com'),
+ (4084,'Socviis',NULL,'B098JX3414','https://m.media-amazon.com/images/I/81yFCDYxwkL._AC_UL320_.jpg',3039,4.2,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NzcxNTkxODU3MTI5NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA4ODQ0ODc3NDYyMTo6Mzo6&url=%2FSocviis-Athletic-Trainers-Lightweight-Breathable%2Fdp%2FB098JX3414%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB098JX3414%26pd_rd_r%3D55569294-b565-4bf8-8ebc-cf48c0bcc1f9%26pd_rd_w%3DMs38A%26pd_rd_wg%3DN8svP%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:54.157371-06','2023-12-19 15:14:54.157371-06','www.amazon.com'),
+ (4081,'Kapsen',NULL,'B092MFRT7T','https://m.media-amazon.com/images/I/71YQNz3uzyL._AC_UL320_.jpg',2080,4.1,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4NzcxNTkxODU3MTI5NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA3OTM1OTkzNDYzMTo6NDo6&url=%2FRunning-Walking-Sneakers-Breathable-Trainers%2Fdp%2FB092MFRT7T%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%253Aamzn1.sym.0c4cbb48-e433-4698-bba6-b3a5297e3e20%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB092MFRT7T%26pd_rd_r%3D55569294-b565-4bf8-8ebc-cf48c0bcc1f9%26pd_rd_w%3DMs38A%26pd_rd_wg%3DN8svP%26pf_rd_p%3D0c4cbb48-e433-4698-bba6-b3a5297e3e20%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-f853d353-bf33-45e7-b5c2-2cb2b31abc9b-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',53,'2023-12-19 15:14:54.122519-06','2023-12-19 15:14:54.16387-06','www.amazon.com'),
+ (4085,'Skechers',NULL,'B01KXSD9WE','https://m.media-amazon.com/images/I/71CL7Xf-TPL._AC_UL320_.jpg',5099,4.2,'$40.24','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Work-Mens-Dighton-Black/dp/B01KXSD9WE/ref=sr_1_56?keywords=men%27s+shoes&qid=1703020492&sr=8-56',53,'2023-12-19 15:14:54.173925-06','2023-12-19 15:14:54.173925-06','www.amazon.com'),
+ (4086,'DC',NULL,'B093LS599G','https://m.media-amazon.com/images/I/71I27VHB52L._AC_UL320_.jpg',6229,4.6,'$41.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DC-Gaveler-Casual-Sneakers-Heather/dp/B093LS599G/ref=sr_1_57?keywords=men%27s+shoes&qid=1703020492&sr=8-57',53,'2023-12-19 15:14:54.184091-06','2023-12-19 15:14:54.184091-06','www.amazon.com'),
+ (4087,'Clarks',NULL,'B083FQQG33','https://m.media-amazon.com/images/I/71pmeBadtwL._AC_UL320_.jpg',1318,4.3,'$45.20','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Whiddon-Step-Dark-Leather/dp/B083FQQG33/ref=sr_1_58?keywords=men%27s+shoes&qid=1703020492&sr=8-58',53,'2023-12-19 15:14:54.1914-06','2023-12-19 15:14:54.1914-06','www.amazon.com'),
+ (4088,'Clarks',NULL,'B00SMJO8WM','https://m.media-amazon.com/images/I/81zqrHuWkZL._AC_UL320_.jpg',16069,4.5,'$39.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Tilden-Cap-Oxford-Leather/dp/B00SMJO8WM/ref=sr_1_59?keywords=men%27s+shoes&qid=1703020492&sr=8-59',53,'2023-12-19 15:14:54.197683-06','2023-12-19 15:14:54.197683-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4089,'adidas',NULL,'B08CZ272F8','https://m.media-amazon.com/images/I/51dghK71TcL._AC_UL320_.jpg',10909,4.5,'$68.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Mens-Kaptir-Black-Carbon/dp/B08CZ272F8/ref=sr_1_60?keywords=men%27s+shoes&qid=1703020492&sr=8-60',53,'2023-12-19 15:14:54.205121-06','2023-12-19 15:14:54.205121-06','www.amazon.com'),
+ (4090,'Bruno Marc',NULL,'B0BGHDPLLF','https://m.media-amazon.com/images/I/71Ad3nHY5KL._AC_UL320_.jpg',8720,4.3,'$34.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Cap-Toe-Oxfords-LOUISWIDE_2/dp/B0BGHDPLLF/ref=sr_1_61?keywords=men%27s+shoes&qid=1703020492&sr=8-61',53,'2023-12-19 15:14:54.214291-06','2023-12-19 15:14:54.214291-06','www.amazon.com'),
+ (4091,'Merrell',NULL,'B098KH8J12','https://m.media-amazon.com/images/I/81rSi12yULL._AC_UL320_.jpg',5790,4.6,'$34.27','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Merrell-Mens-Moab-Hiking-Walnut/dp/B098KH8J12/ref=sr_1_62?keywords=men%27s+shoes&qid=1703020492&sr=8-62',53,'2023-12-19 15:14:54.225289-06','2023-12-19 15:14:54.225289-06','www.amazon.com'),
+ (4092,'Bruno Marc',NULL,'B07S7P8N4S','https://m.media-amazon.com/images/I/71qbbLaNXRL._AC_UL320_.jpg',7163,4.4,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Black-Casual-LG19008M/dp/B07S7P8N4S/ref=sr_1_63?keywords=men%27s+shoes&qid=1703020492&sr=8-63',53,'2023-12-19 15:14:54.232968-06','2023-12-19 15:14:54.232968-06','www.amazon.com'),
+ (4093,'Vooncosir',NULL,'B082Z52Q28','https://m.media-amazon.com/images/I/71ifckGA8IL._AC_UL320_.jpg',4537,4.1,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjIwMDA3MTgxMTc4NzIzMTo6MDo6&url=%2FVooncosir-Sneakers-Breathable-Athletic-Lightweight%2Fdp%2FB082Z52Q28%2Fref%3Dsr_1_65_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-65-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.244658-06','2023-12-19 15:14:54.244658-06','www.amazon.com'),
+ (4115,'Skechers',NULL,'B075PF4PMC','https://m.media-amazon.com/images/I/81R3RoG5fHL._AC_UL320_.jpg',12948,4.5,'$62.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Afterburn-Wonted-Loafer-pebble/dp/B075PF4PMC/ref=sr_1_87?keywords=men%27s+shoes&qid=1703020492&sr=8-87',53,'2023-12-19 15:14:54.424935-06','2023-12-19 15:14:54.424935-06','www.amazon.com'),
+ (4096,'Akk',NULL,'B0BTBWQ554','https://m.media-amazon.com/images/I/71sTRyYBd0L._AC_UL320_.jpg',86,4.2,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjMwMDEwMDU3MTY2MjkwMjo6MDo6&url=%2FAkk-Lightweight-Breathable-Athletic-Sneakers%2Fdp%2FB0BTBWQ554%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.272552-06','2023-12-19 15:14:54.272552-06','www.amazon.com'),
+ (4097,'DC',NULL,'B006IYTG0M','https://m.media-amazon.com/images/I/715fiNSHyoL._AC_UL320_.jpg',20194,4.7,'$49.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DC-Court-Graffik-Skate-Black/dp/B006IYTG0M/ref=sr_1_69?keywords=men%27s+shoes&qid=1703020492&sr=8-69',53,'2023-12-19 15:14:54.279899-06','2023-12-19 15:14:54.279899-06','www.amazon.com'),
+ (4098,'Tommy Hilfiger',NULL,'B014GNDYBI','https://m.media-amazon.com/images/I/81JoQvgtlxL._AC_UL320_.jpg',9684,4.4,'$45.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Tommy-Hilfiger-Mens-PANDORA-Medium/dp/B014GNDYBI/ref=sr_1_70?keywords=men%27s+shoes&qid=1703020492&sr=8-70',53,'2023-12-19 15:14:54.28718-06','2023-12-19 15:14:54.28718-06','www.amazon.com'),
+ (4099,'DC',NULL,'B007RKGQWW','https://m.media-amazon.com/images/I/71umS8hsUzL._AC_UL320_.jpg',3239,4.6,'$49.91','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DC-Anvil-Action-Sports-Black/dp/B007RKGQWW/ref=sr_1_71?keywords=men%27s+shoes&qid=1703020492&sr=8-71',53,'2023-12-19 15:14:54.293855-06','2023-12-19 15:14:54.293855-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4100,'Clarks',NULL,'B01ACQYFI4','https://m.media-amazon.com/images/I/71ZPPw13Z6L._AC_UL320_.jpg',7427,4.5,'$42.37','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Mens-Cotrell-Step-Black/dp/B01ACQYFI4/ref=sr_1_72?keywords=men%27s+shoes&qid=1703020492&sr=8-72',53,'2023-12-19 15:14:54.305365-06','2023-12-19 15:14:54.305365-06','www.amazon.com'),
+ (4101,'ZGR',NULL,'B0CH3H6TY8','https://m.media-amazon.com/images/I/61DffHsw9DL._AC_UL320_.jpg',4,4.7,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjMwMDEwMzE5OTIwNTQwMjo6MDo6&url=%2FZGR-Synthetic-Leather-Sneakers-Tennis%2Fdp%2FB0CH3H6TY8%2Fref%3Dsr_1_73_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-73-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.313301-06','2023-12-19 15:14:54.313301-06','www.amazon.com'),
+ (4102,'OL OUTJET LEGEND',NULL,'B0CGZZQHCS','https://m.media-amazon.com/images/I/81Vx3PTWIaL._AC_UL320_.jpg',42,4.5,'$49.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjMwMDA5NTIyOTUwMTgwMjo6MDo6&url=%2FOL-OUTJET-LEGEND-Comfortable-Lightweight%2Fdp%2FB0CGZZQHCS%2Fref%3Dsr_1_74_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-74-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.320872-06','2023-12-19 15:14:54.320872-06','www.amazon.com'),
+ (4103,'VILOCY',NULL,'B0B3T9V2GY','https://m.media-amazon.com/images/I/81EdJ3zDL8L._AC_UL320_.jpg',3612,4.4,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjIwMDA3MzgyNTgwMTM5ODo6MDo6&url=%2FVILOCY-Sneakers-Oxfords-Business-Lightweight%2Fdp%2FB0B3T9V2GY%2Fref%3Dsr_1_75_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-75-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.328298-06','2023-12-19 15:14:54.328298-06','www.amazon.com'),
+ (4104,'UMYOGO',NULL,'B07W9777K5','https://m.media-amazon.com/images/I/71hVcucYd6L._AC_UL320_.jpg',37603,4.2,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozMDY4MTQzODMwMjM4NzE3OjE3MDMwMjA0OTI6c3BfbXRmOjMwMDAwOTgyNDU2NjQwMjo6MDo6&url=%2FUMYOGO-Breathable-Sneakers-Lightweight-Athletic%2Fdp%2FB07W9777K5%2Fref%3Dsr_1_76_sspa%3Fkeywords%3Dmen%2527s%2Bshoes%26qid%3D1703020492%26sr%3D8-76-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',53,'2023-12-19 15:14:54.334563-06','2023-12-19 15:14:54.334563-06','www.amazon.com'),
+ (4105,'Bruno Marc',NULL,'B073T4SZ7Y','https://m.media-amazon.com/images/I/71TlDeVb6rL._AC_UL320_.jpg',5451,4.4,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-State-01-Black-Leather-Loafers/dp/B073T4SZ7Y/ref=sr_1_77?keywords=men%27s+shoes&qid=1703020492&sr=8-77',53,'2023-12-19 15:14:54.342025-06','2023-12-19 15:14:54.342025-06','www.amazon.com'),
+ (4106,'Skechers',NULL,'B08L8KZBW1','https://m.media-amazon.com/images/I/81bu7HJ8q4L._AC_UL320_.jpg',611,4.7,'$56.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-USA-Mens-Respected-Fallston-Canvas/dp/B08L8KZBW1/ref=sr_1_78?keywords=men%27s+shoes&qid=1703020492&sr=8-78',53,'2023-12-19 15:14:54.35329-06','2023-12-19 15:14:54.35329-06','www.amazon.com'),
+ (4107,'Dockers',NULL,'B0B4X1713M','https://m.media-amazon.com/images/I/51YyP-WJMgL._AC_UL320_.jpg',395,4.3,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dockers-Bronson-Rugged-Casual-Oxford/dp/B0B4X1713M/ref=sr_1_79?keywords=men%27s+shoes&qid=1703020492&sr=8-79',53,'2023-12-19 15:14:54.360368-06','2023-12-19 15:14:54.360368-06','www.amazon.com'),
+ (4108,'Skechers',NULL,'B0BX3X6VDQ','https://m.media-amazon.com/images/I/814yXqiJKxL._AC_UL320_.jpg',1248,4.6,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Summits-Range-Loafer-Charcoal/dp/B0BX3X6VDQ/ref=sr_1_80?keywords=men%27s+shoes&qid=1703020492&sr=8-80',53,'2023-12-19 15:14:54.367242-06','2023-12-19 15:14:54.367242-06','www.amazon.com'),
+ (4110,'Sperry',NULL,'B07VCSQPK3','https://m.media-amazon.com/images/I/81Pc-ezcpgL._AC_UL320_.jpg',3609,4.5,'$41.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/SPERRY-Mens-Striper-Sneaker-Black/dp/B07VCSQPK3/ref=sr_1_82?keywords=men%27s+shoes&qid=1703020492&sr=8-82',53,'2023-12-19 15:14:54.382358-06','2023-12-19 15:14:54.382358-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4111,'Reebok',NULL,'B09H56MCR8','https://m.media-amazon.com/images/I/716oVRpDcML._AC_UL320_.jpg',392,4.6,'$37.04','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reebok-Cross-Trainer-White-Vector/dp/B09H56MCR8/ref=sr_1_83?keywords=men%27s+shoes&qid=1703020492&sr=8-83',53,'2023-12-19 15:14:54.390103-06','2023-12-19 15:14:54.390103-06','www.amazon.com'),
+ (4112,'Nike',NULL,'B098PDC8L1','https://m.media-amazon.com/images/I/81tWOXksBiL._AC_UL320_.jpg',1773,4.3,'$54.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sneaker-Midnight-White-Obsidian-Ashen/dp/B098PDC8L1/ref=sr_1_84?keywords=men%27s+shoes&qid=1703020492&sr=8-84',53,'2023-12-19 15:14:54.399456-06','2023-12-19 15:14:54.399456-06','www.amazon.com'),
+ (4113,'Skechers',NULL,'B0BSDCFC16','https://m.media-amazon.com/images/I/71XxtLQKe0L._AC_UL320_.jpg',951,4.6,'$70.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Slip-Ins-Athletic-Walking-Air-Cooled-Sneaker/dp/B0BSDCFC16/ref=sr_1_85?keywords=men%27s+shoes&qid=1703020492&sr=8-85',53,'2023-12-19 15:14:54.409884-06','2023-12-19 15:14:54.409884-06','www.amazon.com'),
+ (4114,'Under Armour',NULL,'B09LS8RCBM','https://m.media-amazon.com/images/I/71SwE8VuwFL._AC_UL320_.jpg',1058,4.5,'$63.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Charged-Escape-Running/dp/B09LS8RCBM/ref=sr_1_86?keywords=men%27s+shoes&qid=1703020492&sr=8-86',53,'2023-12-19 15:14:54.417312-06','2023-12-19 15:14:54.417312-06','www.amazon.com'),
+ (4116,'Oakley',NULL,'B0BCX1QM93','https://m.media-amazon.com/images/I/71Ql+lcKZ2L._AC_UL320_.jpg',59,4.4,'$75.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oakley-Mens-Split-Sneaker-Light/dp/B0BCX1QM93/ref=sr_1_88?keywords=men%27s+shoes&qid=1703020492&sr=8-88',53,'2023-12-19 15:14:54.432479-06','2023-12-19 15:14:54.432479-06','www.amazon.com'),
+ (4117,'Under Armour',NULL,'B0968YW75P','https://m.media-amazon.com/images/I/51sQuWP5SdL._AC_UL320_.jpg',6883,4.6,'$65.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Surge-Running-Black/dp/B0968YW75P/ref=sr_1_89?keywords=men%27s+shoes&qid=1703020492&sr=8-89',53,'2023-12-19 15:14:54.440571-06','2023-12-19 15:14:54.440571-06','www.amazon.com'),
+ (4118,'Bruno Marc',NULL,'B089YN1F8J','https://m.media-amazon.com/images/I/61u1W+ZI2KL._AC_UL320_.jpg',6009,4.5,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Leather-Loafers-Cambridge-05/dp/B089YN1F8J/ref=sr_1_90?keywords=men%27s+shoes&qid=1703020492&sr=8-90',53,'2023-12-19 15:14:54.447828-06','2023-12-19 15:14:54.447828-06','www.amazon.com'),
+ (4119,'Under Armour',NULL,'B09PPGCPBF','https://m.media-amazon.com/images/I/51yDdaSZHFL._AC_UL320_.jpg',1653,4.5,'$69.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Unisex-Lockdown-Basketball/dp/B09PPGCPBF/ref=sr_1_91?keywords=men%27s+shoes&qid=1703020492&sr=8-91',53,'2023-12-19 15:14:54.45885-06','2023-12-19 15:14:54.45885-06','www.amazon.com'),
+ (4120,'adidas',NULL,'B08CZ416J1','https://m.media-amazon.com/images/I/81cuTtP+n6L._AC_UL320_.jpg',17107,4.5,'$55.72','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Racer-Adapt-Black-White/dp/B08CZ416J1/ref=sr_1_92?keywords=men%27s+shoes&qid=1703020492&sr=8-92',53,'2023-12-19 15:14:54.465386-06','2023-12-19 15:14:54.465386-06','www.amazon.com'),
+ (4121,'DREAM PAIRS',NULL,'B00SX5JQZ4','https://m.media-amazon.com/images/I/71rV3mQlH6L._AC_UL320_.jpg',8588,4.4,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PRINCE-Classic-Modern-Wingtip-PRINCE-3-BLACK/dp/B00SX5JQZ4/ref=sr_1_94?keywords=men%27s+shoes&qid=1703020492&sr=8-94',53,'2023-12-19 15:14:54.476155-06','2023-12-19 15:14:54.476155-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4122,'adidas',NULL,'B0BHPTK364','https://m.media-amazon.com/images/I/71TU8HBorhL._AC_UL320_.jpg',152,4.5,'$59.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Mens-Racer-Sneaker-White/dp/B0BHPTK364/ref=sr_1_95?keywords=men%27s+shoes&qid=1703020492&sr=8-95',53,'2023-12-19 15:14:54.486884-06','2023-12-19 15:14:54.486884-06','www.amazon.com'),
+ (4123,'Avia',NULL,'B0C9NNLGKT','https://m.media-amazon.com/images/I/51Oss8hrhlL._AC_UL320_.jpg',69,4.4,'$49.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Avia-Basketball-Sneakers-Indoor-Outdoor/dp/B0C9NNLGKT/ref=sr_1_96?keywords=men%27s+shoes&qid=1703020492&sr=8-96',53,'2023-12-19 15:14:54.493402-06','2023-12-19 15:14:54.493402-06','www.amazon.com'),
+ (4124,'Hanes',NULL,'B07J6BPTHD','https://m.media-amazon.com/images/I/71GqKnkXMXL._AC_UL320_.jpg',31089,4.3,'$28.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hanes-Moccasin-Slipper-Outdoor-Protection/dp/B07J6BPTHD/ref=sr_1_97?keywords=men%27s+shoes&qid=1703020492&sr=8-97',53,'2023-12-19 15:14:54.499966-06','2023-12-19 15:14:54.499966-06','www.amazon.com'),
+ (4125,'Nunn Bush',NULL,'B09M1Y64ZG','https://m.media-amazon.com/images/I/61BDLoPf4wL._AC_UL320_.jpg',176,4.3,'$74.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nunn-Bush-Oxford-Leather-Lightweight/dp/B09M1Y64ZG/ref=sr_1_98?keywords=men%27s+shoes&qid=1703020492&sr=8-98',53,'2023-12-19 15:14:54.507647-06','2023-12-19 15:14:54.507647-06','www.amazon.com'),
+ (4126,'ASICS',NULL,'B0BZDSVX7J','https://m.media-amazon.com/images/I/51EVLtlIM4L._AC_UL320_.jpg',129,4.2,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Gel-Dedicate-Tennis-Shoes-White/dp/B0BZDSVX7J/ref=sr_1_99?keywords=men%27s+shoes&qid=1703020492&sr=8-99',53,'2023-12-19 15:14:54.51555-06','2023-12-19 15:14:54.51555-06','www.amazon.com'),
+ (4127,'Cole Haan',NULL,'B08SQC59ZF','https://m.media-amazon.com/images/I/41SIVoAuCHL._AC_UL320_.jpg',1152,4.6,'$90.15','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Cole-Haan-Atlantic-Oxford-Chestnut/dp/B08SQC59ZF/ref=sr_1_100?keywords=men%27s+shoes&qid=1703020492&sr=8-100',53,'2023-12-19 15:14:54.52295-06','2023-12-19 15:14:54.52295-06','www.amazon.com'),
+ (4128,'Bruno Marc',NULL,'B0BN8HM5XJ','https://m.media-amazon.com/images/I/71O5Wj1PhbL._AC_UL320_.jpg',5012,4.4,'$38.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-Leather-Classic-DOWNINGWIDE-01/dp/B0BN8HM5XJ/ref=sr_1_102?keywords=men%27s+shoes&qid=1703020492&sr=8-102',53,'2023-12-19 15:14:54.539726-06','2023-12-19 15:14:54.539726-06','www.amazon.com'),
+ (4129,'DREAM PAIRS',NULL,'B08CZKLJM9','https://m.media-amazon.com/images/I/71wOU0QwREL._AC_UL320_.jpg',12942,4.4,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Prince-Classic-Modern-Wingtip-PRINCEWIDE-6-BROWN/dp/B08CZKLJM9/ref=sr_1_103?keywords=men%27s+shoes&qid=1703020492&sr=8-103',53,'2023-12-19 15:14:54.548453-06','2023-12-19 15:14:54.548453-06','www.amazon.com'),
+ (4130,'Avia',NULL,'B07B4JSD9Q','https://m.media-amazon.com/images/I/51hr22w+-0L._AC_UL320_.jpg',1811,4.0,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Avia-Mens-Avi-Skill-Service-Black/dp/B07B4JSD9Q/ref=sr_1_104?keywords=men%27s+shoes&qid=1703020492&sr=8-104',53,'2023-12-19 15:14:54.556187-06','2023-12-19 15:14:54.556187-06','www.amazon.com'),
+ (4131,'adidas',NULL,'B0BHPT5Z7Y','https://m.media-amazon.com/images/I/71cZbWhjZRL._AC_UL320_.jpg',548,4.4,'$49.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Runfalcon-Sneaker-Metallic-Scarlet/dp/B0BHPT5Z7Y/ref=sr_1_105?keywords=men%27s+shoes&qid=1703020492&sr=8-105',53,'2023-12-19 15:14:54.564535-06','2023-12-19 15:14:54.564535-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4132,'Bruno Marc',NULL,'B01FYCP8NC','https://m.media-amazon.com/images/I/61xQhG-Fb5L._AC_UL320_.jpg',2171,4.5,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Goldman-01-Leather-Square-Oxfords/dp/B01FYCP8NC/ref=sr_1_106?keywords=men%27s+shoes&qid=1703020492&sr=8-106',53,'2023-12-19 15:14:54.575524-06','2023-12-19 15:14:54.575524-06','www.amazon.com'),
+ (4133,'Skechers',NULL,'B07YQPBH3J','https://m.media-amazon.com/images/I/81C5ohx8YyL._AC_UL320_.jpg',3962,4.5,'$41.25','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-mens-Walk-Max-Clinched/dp/B07YQPBH3J/ref=sr_1_107?keywords=men%27s+shoes&qid=1703020492&sr=8-107',53,'2023-12-19 15:14:54.583123-06','2023-12-19 15:14:54.583123-06','www.amazon.com'),
+ (4134,'ASICS',NULL,'B0B484TMX3','https://m.media-amazon.com/images/I/71qha-bIjzL._AC_UL320_.jpg',1071,4.5,'$59.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Gel-Venture-Running-Shoes-Black/dp/B0B484TMX3/ref=sr_1_108?keywords=men%27s+shoes&qid=1703020492&sr=8-108',53,'2023-12-19 15:14:54.590345-06','2023-12-19 15:14:54.590345-06','www.amazon.com'),
+ (4587,'BAGSMART 6 Set/4 Set/2 Set Compression Packing Cubes for Travel, Lightweight Vacation Travel Essentials, Travel Accessories for Suitcase Organizer Bags Set, Durable Luggage Organizer Travel Bags',NULL,'B08Z7SLGMF','https://m.media-amazon.com/images/I/71Cg8hse7WL._AC_UL320_.jpg',7563,4.6,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BAGSMART-Organizers-Expandable-Compression-Lightweight/dp/B08Z7SLGMF/ref=sr_1_95?keywords=travel+accessories&qid=1703020686&sr=8-95',57,'2023-12-19 15:18:08.100928-06','2023-12-19 15:18:08.100928-06','www.amazon.com'),
+ (4136,'VILOCY',NULL,'B0C1B2SDNJ','https://m.media-amazon.com/images/I/81+zS10jGcL._AC_UL320_.jpg',3612,4.4,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzc4NzE4ODUyOTA3NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNjk1MDk1MjIyOTg6OjA6Og&url=%2FVILOCY-Sneakers-Lightweight-Comfortable-Breathable%2Fdp%2FB0C1B2SDNJ%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0C1B2SDNJ%26pd_rd_r%3Dcbc67c46-1e33-4ce3-95ea-1ece4073707c%26pd_rd_w%3Dg6QxC%26pd_rd_wg%3DB82tp%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:54.605468-06','2023-12-19 15:14:54.605468-06','www.amazon.com'),
+ (4137,'VILOCY',NULL,'B0BM3BJD8H','https://m.media-amazon.com/images/I/81jMUruuCXL._AC_UL320_.jpg',681,4.5,'$45.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzc4NzE4ODUyOTA3NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxMjE4MDkzNDA1OTg6OjE6Og&url=%2FOxfords-Business-Comfortable-Breathable-Lightweight%2Fdp%2FB0BM3BJD8H%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0BM3BJD8H%26pd_rd_r%3Dcbc67c46-1e33-4ce3-95ea-1ece4073707c%26pd_rd_w%3Dg6QxC%26pd_rd_wg%3DB82tp%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-50-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:54.615425-06','2023-12-19 15:14:54.615425-06','www.amazon.com'),
+ (4138,'Jousen',NULL,'B07TDKK853','https://m.media-amazon.com/images/I/81QxMQEee1L._AC_UL320_.jpg',1072,4.3,'$46.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzc4NzE4ODUyOTA3NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwODUwNTQ5OTc3MDI6OjI6Og&url=%2FJOUSEN-Fashion-Sneakers-Eyelets-Casual%2Fdp%2FB07TDKK853%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB07TDKK853%26pd_rd_r%3Dcbc67c46-1e33-4ce3-95ea-1ece4073707c%26pd_rd_w%3Dg6QxC%26pd_rd_wg%3DB82tp%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:54.62327-06','2023-12-19 15:14:54.62327-06','www.amazon.com'),
+ (4139,'Feethit',NULL,'B09YRPZZ4Q','https://m.media-amazon.com/images/I/71OaLmM2zdL._AC_UL320_.jpg',2655,4.2,'$30.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzc4NzE4ODUyOTA3NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwOTY5Njg4NzQ4OTg6OjM6Og&url=%2FFeethit-Lightweight-Breathable-Comfortable-Sneakers%2Fdp%2FB09YRPZZ4Q%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB09YRPZZ4Q%26pd_rd_r%3Dcbc67c46-1e33-4ce3-95ea-1ece4073707c%26pd_rd_w%3Dg6QxC%26pd_rd_wg%3DB82tp%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:54.629975-06','2023-12-19 15:14:54.629975-06','www.amazon.com'),
+ (4135,'Giniros',NULL,'B0BP24VG2K','https://m.media-amazon.com/images/I/71KZAYqIHhL._AC_UL320_.jpg',901,4.2,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzc4NzE4ODUyOTA3NzE3OjE3MDMwMjA0OTI6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxNDY3MDk4MDUwOTg6OjQ6Og&url=%2FGiniros-Running-Breathable-Lightweight-Sneakers%2Fdp%2FB0BP24VG2K%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dmen%2527s%2Bshoes%26keywords%3Dmen%2527s%2Bshoes%26pd_rd_i%3DB0BP24VG2K%26pd_rd_r%3Dcbc67c46-1e33-4ce3-95ea-1ece4073707c%26pd_rd_w%3Dg6QxC%26pd_rd_wg%3DB82tp%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DK5RA5081PE0K7EF11925%26qid%3D1703020492%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',53,'2023-12-19 15:14:54.597582-06','2023-12-19 15:14:54.635773-06','www.amazon.com'),
+ (4140,'Amazon Essentials',NULL,'B096NP4QWH','https://m.media-amazon.com/images/I/61JQEDRPNTL._AC_UL320_.jpg',9379,4.2,'$23.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfYXRmOjIwMDAyNDUwNDQ0MDg5ODo6MDo6&url=%2FAmazon-Essentials-Womens-Pointed-Toe-Ballet%2Fdp%2FB096NP4QWH%2Fref%3Dsr_1_1_ffob_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',54,'2023-12-19 15:15:01.961346-06','2023-12-19 15:15:01.961346-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4141,'Reebok',NULL,'B000AOZKB0','https://m.media-amazon.com/images/I/71kqJ4XOmtL._AC_UL320_.jpg',40466,4.4,'$33.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reebok-Womens-Princess-Aerobics-White/dp/B000AOZKB0/ref=sr_1_2?keywords=women%27s+shoes&qid=1703020500&sr=8-2',54,'2023-12-19 15:15:01.971891-06','2023-12-19 15:15:01.971891-06','www.amazon.com'),
+ (4142,'Skechers',NULL,'B07BKLXNCC','https://m.media-amazon.com/images/I/81wjCtEL03L._AC_UL320_.jpg',20005,4.5,'$37.91','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Summit-Quick-Getaway/dp/B07BKLXNCC/ref=sr_1_3?keywords=women%27s+shoes&qid=1703020500&sr=8-3',54,'2023-12-19 15:15:01.978278-06','2023-12-19 15:15:01.978278-06','www.amazon.com'),
+ (4143,'Skechers',NULL,'B07847ND21','https://m.media-amazon.com/images/I/619B6lMmq7L._AC_UL320_.jpg',47002,4.5,'$36.43','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Summits-Sneakers-Black/dp/B07847ND21/ref=sr_1_4?keywords=women%27s+shoes&qid=1703020500&sr=8-4',54,'2023-12-19 15:15:01.984808-06','2023-12-19 15:15:01.984808-06','www.amazon.com'),
+ (4588,'DDgro Travel Essentials for Men Women, Electronics Organizer Pouch Bag for Tech Accessories/Charger & Cords/Cables/Magic Mouse (Small, Light Gray)',NULL,'B0915TJTJ8','https://m.media-amazon.com/images/I/61Zo8kdCb1L._AC_UL320_.jpg',4595,4.5,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DDgro-Electronics-Accessories-Certificates-stationeries/dp/B0915TJTJ8/ref=sr_1_97?keywords=travel+accessories&qid=1703020686&sr=8-97',57,'2023-12-19 15:18:08.107497-06','2023-12-19 15:18:08.107497-06','www.amazon.com'),
+ (4145,'TIOSEBON',NULL,'B06Y5L9B28','https://m.media-amazon.com/images/I/61Xcdvg4x6L._AC_UL320_.jpg',32684,4.4,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjU5MTYyNjU1NTU2NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDEyMTM0MzkxNTQ5ODo6MDo6&url=%2FTIOSEBON-Athletic-Walking-Mesh-Comfortable-Sneakers%2Fdp%2FB06Y5L9B28%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB06Y5L9B28%26pd_rd_r%3Db9c22103-e916-4fdd-87f1-8137fbe97c0a%26pd_rd_w%3D6Db44%26pd_rd_wg%3DFXfqC%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',54,'2023-12-19 15:15:01.999732-06','2023-12-19 15:15:01.999732-06','www.amazon.com'),
+ (4146,'vibdiv',NULL,'B08CZ7YX3B','https://m.media-amazon.com/images/I/81h4mg7EtCL._AC_UL320_.jpg',10837,4.3,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjU5MTYyNjU1NTU2NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA5OTg1MjU1MjAwMjo6MTo6&url=%2Fvibdiv-Walking-Sneakers-Lightweight-Comfortable%2Fdp%2FB08CZ7YX3B%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB08CZ7YX3B%26pd_rd_r%3Db9c22103-e916-4fdd-87f1-8137fbe97c0a%26pd_rd_w%3D6Db44%26pd_rd_wg%3DFXfqC%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',54,'2023-12-19 15:15:02.013-06','2023-12-19 15:15:02.013-06','www.amazon.com'),
+ (4147,'FRACORA',NULL,'B08B8RCJJR','https://m.media-amazon.com/images/I/818BTVSf1FL._AC_UL320_.jpg',7455,4.2,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjU5MTYyNjU1NTU2NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDEwNjY3NjI2MzkwMjo6Mjo6&url=%2FFRACORA-Breathable-Leather-Walking-Grey-US10%2Fdp%2FB08B8RCJJR%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB08B8RCJJR%26pd_rd_r%3Db9c22103-e916-4fdd-87f1-8137fbe97c0a%26pd_rd_w%3D6Db44%26pd_rd_wg%3DFXfqC%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',54,'2023-12-19 15:15:02.019528-06','2023-12-19 15:15:02.019528-06','www.amazon.com'),
+ (4148,'DADAWEN',NULL,'B01L92LMAE','https://m.media-amazon.com/images/I/61zbPhPK0yL._AC_UL320_.jpg',8875,4.3,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjU5MTYyNjU1NTU2NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA0MTYxNjE1NTI5ODo6Mzo6&url=%2FDADAWEN-Platform-Lace-Up-Wingtips-Oxfords%2Fdp%2FB01L92LMAE%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB01L92LMAE%26pd_rd_r%3Db9c22103-e916-4fdd-87f1-8137fbe97c0a%26pd_rd_w%3D6Db44%26pd_rd_wg%3DFXfqC%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',54,'2023-12-19 15:15:02.0271-06','2023-12-19 15:15:02.0271-06','www.amazon.com'),
+ (4144,'Ablanczoom',NULL,'B0777KKFY2','https://m.media-amazon.com/images/I/71OS+eDPd9L._AC_UL320_.jpg',3308,4.1,'$25.47','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjU5MTYyNjU1NTU2NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAzMTc4MzcwMDIwMjo6NDo6&url=%2FAblanczoom-Leather-Loafers-Moccasins-Breathable%2Fdp%2FB0777KKFY2%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%253Aamzn1.sym.cbead6fc-f00c-4cd7-8558-497bc91856e7%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB0777KKFY2%26pd_rd_r%3Db9c22103-e916-4fdd-87f1-8137fbe97c0a%26pd_rd_w%3D6Db44%26pd_rd_wg%3DFXfqC%26pf_rd_p%3Dcbead6fc-f00c-4cd7-8558-497bc91856e7%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-183302c6-8dec-4386-8e58-6031e7be5ad8-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',54,'2023-12-19 15:15:01.993001-06','2023-12-19 15:15:02.033669-06','www.amazon.com'),
+ (4149,'Clarks',NULL,'B00U8PORZ6','https://m.media-amazon.com/images/I/711j1A3rxWL._AC_UL320_.jpg',12607,4.5,'$43.32','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Ashland-Slip-Loafer/dp/B00U8PORZ6/ref=sr_1_5?keywords=women%27s+shoes&qid=1703020500&sr=8-5',54,'2023-12-19 15:15:02.042224-06','2023-12-19 15:15:02.042224-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4150,'ASICS',NULL,'B08PK8WG3D','https://m.media-amazon.com/images/I/610DKH06nTL._AC_UL320_.jpg',17991,4.4,'$47.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Womens-Gel-Contend-Running-Shoes/dp/B08PK8WG3D/ref=sr_1_6?keywords=women%27s+shoes&qid=1703020500&sr=8-6',54,'2023-12-19 15:15:02.052232-06','2023-12-19 15:15:02.052232-06','www.amazon.com'),
+ (4151,'Hey Dude',NULL,'B0BB15FWRN','https://m.media-amazon.com/images/I/51vcNivyleL._AC_UL320_.jpg',1935,4.6,'$29.25','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hey-Dude-Sandshell-Comfortable-Light-Weight/dp/B0BB15FWRN/ref=sr_1_7?keywords=women%27s+shoes&qid=1703020500&sr=8-7',54,'2023-12-19 15:15:02.059019-06','2023-12-19 15:15:02.059019-06','www.amazon.com'),
+ (4152,'New Balance',NULL,'B093QYJZS6','https://m.media-amazon.com/images/I/81J7Ep3ikXL._AC_UL320_.jpg',4970,4.3,'$38.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/New-Balance-Dynasoft-Nergize-Trainer/dp/B093QYJZS6/ref=sr_1_8?keywords=women%27s+shoes&qid=1703020500&sr=8-8',54,'2023-12-19 15:15:02.065758-06','2023-12-19 15:15:02.065758-06','www.amazon.com'),
+ (4153,'Amazon Essentials',NULL,'B0BPCJ81LP','https://m.media-amazon.com/images/I/61bkLFlfsfL._AC_UL320_.jpg',118,3.9,'$24.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Shearling-Black/dp/B0BPCJ81LP/ref=sr_1_9?keywords=women%27s+shoes&qid=1703020500&sr=8-9',54,'2023-12-19 15:15:02.076054-06','2023-12-19 15:15:02.076054-06','www.amazon.com'),
+ (4154,'adidas',NULL,'B0BG94S3L2','https://m.media-amazon.com/images/I/71WneOD1jgL._AC_UL320_.jpg',402,4.2,'$45.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Womens-Cloudfoam-Sportswear-Sneaker/dp/B0BG94S3L2/ref=sr_1_10?keywords=women%27s+shoes&qid=1703020500&sr=8-10',54,'2023-12-19 15:15:02.086554-06','2023-12-19 15:15:02.086554-06','www.amazon.com'),
+ (4155,'Amazon Essentials',NULL,'B088KBVBXR','https://m.media-amazon.com/images/I/61YXQs52RVL._AC_UL320_.jpg',11009,4.1,'$22.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDA1NDczODQzNzIzMTo6MDo6&url=%2FAmazon-Essentials-Womens-Loafer-Beige%2Fdp%2FB088KBVBXR%2Fref%3Dsr_1_11_ffob_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.094121-06','2023-12-19 15:15:02.094121-06','www.amazon.com'),
+ (4156,'Reebok',NULL,'B09ZFXTMF5','https://m.media-amazon.com/images/I/61riOw+8TnL._AC_UL320_.jpg',246,4.5,'$65.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjMwMDAwNzIxOTIyMTQwMjo6MDo6&url=%2FReebok-Womens-Advance-Sneaker-FTWWHT%2Fdp%2FB09ZFXTMF5%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.100676-06','2023-12-19 15:15:02.100676-06','www.amazon.com'),
+ (4157,'Waluzs',NULL,'B09SFXPMR2','https://m.media-amazon.com/images/I/61ldSgqlGqL._AC_UL320_.jpg',5081,4.2,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjMwMDA3OTU4MzU4ODIwMjo6MDo6&url=%2FWomens-Sneakers-Walking-Fashion-Sneakers%25EF%25BC%2588White-5%25EF%25BC%2589%2Fdp%2FB09SFXPMR2%2Fref%3Dsr_1_13_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-13-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.108066-06','2023-12-19 15:15:02.108066-06','www.amazon.com'),
+ (4158,'VOCNTVY',NULL,'B0BS6PKC9K','https://m.media-amazon.com/images/I/61QqovnY0QL._AC_UL320_.jpg',70,4.2,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDEzNTM4Mjg3OTE5ODo6MDo6&url=%2FClassic-Leather-Comfort-Moccasins-Driving%2Fdp%2FB0BS6PKC9K%2Fref%3Dsr_1_14_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-14-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.115216-06','2023-12-19 15:15:02.115216-06','www.amazon.com'),
+ (4159,'Lamincoa',NULL,'B08CXLXGRX','https://aax-us-iad.amazon.com/e/loi/imp?b=JNbnCvBxJJ9bOiBoMb5sQa0AAAGMg-6W9QEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICCjdN7n',12200,4.2,'$33.55','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RNbnCvBxJJ9bOiBoMb5sQa0AAAGMg-6WswEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICCjdN7n/https://www.amazon.com/Lamincoa-Sneakers-Lightweight-Outdooor-Blue-Pink/dp/B08CXLXGRX/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=women%27s+shoes&keywords=women%27s+shoes&pd_rd_i=B08CXLXGRX&pd_rd_r=b9c22103-e916-4fdd-87f1-8137fbe97c0a&pd_rd_w=oM18X&pd_rd_wg=FXfqC&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=614PPZTWS9JZKEHNW0B5&qid=1703020500&sbo=Tc8eqSFhUl4VwMzbE4fw%2Fw%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',54,'2023-12-19 15:15:02.126211-06','2023-12-19 15:15:02.126211-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4160,'adidas',NULL,'B09VCN733T','https://m.media-amazon.com/images/I/71ZvZcMomhL._AC_UL320_.jpg',21902,4.4,'$31.83','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Womens-Puremotion-Sneaker-Alumina/dp/B09VCN733T/ref=sr_1_15?keywords=women%27s+shoes&qid=1703020500&sr=8-15',54,'2023-12-19 15:15:02.132818-06','2023-12-19 15:15:02.132818-06','www.amazon.com'),
+ (4161,'PUMA',NULL,'B08CS2PRVZ','https://m.media-amazon.com/images/I/71xX+mHmkUL._AC_UL320_.jpg',10126,4.4,'$40.08','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-womens-Running-Black-ignite-Pink-aquamarine/dp/B08CS2PRVZ/ref=sr_1_16?keywords=women%27s+shoes&qid=1703020500&sr=8-16',54,'2023-12-19 15:15:02.1395-06','2023-12-19 15:15:02.1395-06','www.amazon.com'),
+ (4162,'ASICS',NULL,'B09MZ2H7PK','https://m.media-amazon.com/images/I/61-zP6mMP2L._AC_UL320_.jpg',6303,4.5,'$44.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Womens-Gel-Excite-Running-Barely/dp/B09MZ2H7PK/ref=sr_1_17?keywords=women%27s+shoes&qid=1703020500&sr=8-17',54,'2023-12-19 15:15:02.145777-06','2023-12-19 15:15:02.145777-06','www.amazon.com'),
+ (4163,'MUK LUKS',NULL,'B0BDBD5KT5','https://m.media-amazon.com/images/I/71hiIy37KEL._AC_UL320_.jpg',58,4.1,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MUK-LUKS-Womens-Street-Richmond/dp/B0BDBD5KT5/ref=sr_1_18?keywords=women%27s+shoes&qid=1703020500&sr=8-18',54,'2023-12-19 15:15:02.157297-06','2023-12-19 15:15:02.157297-06','www.amazon.com'),
+ (4164,'BENEKER',NULL,'B07YKCXYK2','https://m.media-amazon.com/images/I/61TOV5mcMhL._AC_UL320_.jpg',11499,4.5,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDAyMTAwNzkxMDI0MTo6MDo6&url=%2FWomens-Canvas-Sneakers-Lightweight-Casual%2Fdp%2FB07YKCXYK2%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.167499-06','2023-12-19 15:15:02.167499-06','www.amazon.com'),
+ (4165,'VenusCelia',NULL,'B0BKGYRH4J','https://m.media-amazon.com/images/I/71ejHLBJOPL._AC_UL320_.jpg',2727,4.0,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDE0NTY0NzI3OTk5ODo6MDo6&url=%2FVenusCelia-Womens-Plain-Dance-Flats%2Fdp%2FB0BKGYRH4J%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.174665-06','2023-12-19 15:15:02.174665-06','www.amazon.com'),
+ (4166,'FUNKYMONKEY',NULL,'B09577T7JB','https://m.media-amazon.com/images/I/71DE8-B6SVL._AC_UL320_.jpg',4354,4.4,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDA0NDE0OTMyNTk5ODo6MDo6&url=%2FFUNKYMONKEY-Canvas-Classic-Comfort-Sneaker%2Fdp%2FB09577T7JB%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.181161-06','2023-12-19 15:15:02.181161-06','www.amazon.com'),
+ (4167,'FRACORA',NULL,'B09H6J9N8P','https://m.media-amazon.com/images/I/61JmYkbf7iL._AC_UL320_.jpg',3041,4.2,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDA4MzUzMTMxODE5ODo6MDo6&url=%2FFRACORA-Leather-Comfortable-Fashion-Sneaker%2Fdp%2FB09H6J9N8P%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.188115-06','2023-12-19 15:15:02.188115-06','www.amazon.com'),
+ (4168,'Blowfish Malibu',NULL,'B01L9NBLPO','https://m.media-amazon.com/images/I/7151ZVkpZfL._AC_UL320_.jpg',30565,4.6,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Blowfish-Womens-Marley-Fashion-Sneaker/dp/B01L9NBLPO/ref=sr_1_23?keywords=women%27s+shoes&qid=1703020500&sr=8-23',54,'2023-12-19 15:15:02.195872-06','2023-12-19 15:15:02.195872-06','www.amazon.com'),
+ (4169,'adidas',NULL,'B091V6S244','https://m.media-amazon.com/images/I/81JNKz52U7L._AC_UL320_.jpg',1711,4.3,'$39.65','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Originals-Womens-Swift-Sneaker/dp/B091V6S244/ref=sr_1_24?keywords=women%27s+shoes&qid=1703020500&sr=8-24',54,'2023-12-19 15:15:02.201688-06','2023-12-19 15:15:02.201688-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4170,'ASICS',NULL,'B091KHRGPS','https://m.media-amazon.com/images/I/615jKNTNWKL._AC_UL320_.jpg',20762,4.4,'$42.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Gel-Venture-Running-Piedmont-Metropolis/dp/B091KHRGPS/ref=sr_1_26?keywords=women%27s+shoes&qid=1703020500&sr=8-26',54,'2023-12-19 15:15:02.212628-06','2023-12-19 15:15:02.212628-06','www.amazon.com'),
+ (4171,'Brooks',NULL,'B09RRHT5T4','https://m.media-amazon.com/images/I/71XjYtwZNRL._AC_UL320_.jpg',4283,4.7,'$139.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjMwMDAwMjM2Njc3MTAwMjo6MDo6&url=%2FBrooks-Womens-Ghost-Neutral-Running%2Fdp%2FB09RRHT5T4%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1%26smid%3DAU2SJWQ0WCZ47',54,'2023-12-19 15:15:02.219564-06','2023-12-19 15:15:02.219564-06','www.amazon.com'),
+ (4172,'SPATI',NULL,'B09DKKNQ3B','https://m.media-amazon.com/images/I/713f02ZScEL._AC_UL320_.jpg',306,4.0,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjIwMDAzMjEzNjgxNDU5ODo6MDo6&url=%2FSPATI-Knitted-Footwear-Breathable-Numeric_5%2Fdp%2FB09DKKNQ3B%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.226696-06','2023-12-19 15:15:02.226696-06','www.amazon.com'),
+ (4173,'FRACORA',NULL,'B0B3WNY49V','https://m.media-amazon.com/images/I/71VRMwja6kL._AC_UL320_.jpg',1603,4.3,'$42.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3ODM0OTE0MjY5NDc4NzE3OjE3MDMwMjA1MDA6c3BfbXRmOjMwMDA2NTcyODc4ODgwMjo6MDo6&url=%2FLeather-Booties-Non-slip-Waterproof-Black-US8%2Fdp%2FB0B3WNY49V%2Fref%3Dsr_1_29_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020500%26sr%3D8-29-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:02.236806-06','2023-12-19 15:15:02.236806-06','www.amazon.com'),
+ (4174,'Under Armour',NULL,'B08H2GX4CM','https://m.media-amazon.com/images/I/51PgLKADR9L._AC_UL320_.jpg',19651,4.5,'$44.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Womens-Charged-Assert/dp/B08H2GX4CM/ref=sr_1_30?keywords=women%27s+shoes&qid=1703020500&sr=8-30',54,'2023-12-19 15:15:02.243521-06','2023-12-19 15:15:02.243521-06','www.amazon.com'),
+ (4175,'Soda',NULL,'B09MVFC4YW','https://m.media-amazon.com/images/I/71Mg0-0oP5L._AC_UL320_.jpg',7564,4.4,'$31.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CHANCE-Perforated-Stacked-Booties-numeric_10/dp/B09MVFC4YW/ref=sr_1_31?keywords=women%27s+shoes&qid=1703020500&sr=8-31',54,'2023-12-19 15:15:02.255283-06','2023-12-19 15:15:02.255283-06','www.amazon.com'),
+ (4176,'LifeStride',NULL,'B07CR24XQ6','https://m.media-amazon.com/images/I/7176r-kEwBL._AC_UL320_.jpg',6689,4.2,'$47.21','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LifeStride-Womens-Adley-Ankle-Black/dp/B07CR24XQ6/ref=sr_1_32?keywords=women%27s+shoes&qid=1703020500&sr=8-32',54,'2023-12-19 15:15:02.262307-06','2023-12-19 15:15:02.262307-06','www.amazon.com'),
+ (4177,'Clarks',NULL,'B01N1XI0GI','https://m.media-amazon.com/images/I/81q9voJKrNL._AC_UL320_.jpg',9530,4.5,'$43.74','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Womens-Loafer-Tumbled-Leather/dp/B01N1XI0GI/ref=sr_1_33?keywords=women%27s+shoes&qid=1703020500&sr=8-33',54,'2023-12-19 15:15:02.269507-06','2023-12-19 15:15:02.269507-06','www.amazon.com'),
+ (4178,'Under Armour',NULL,'B09XBVQGPS','https://m.media-amazon.com/images/I/61D2nT6Tr+L._AC_UL320_.jpg',535,4.3,'$56.25','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Womens-Charged-Running/dp/B09XBVQGPS/ref=sr_1_34?keywords=women%27s+shoes&qid=1703020500&sr=8-34',54,'2023-12-19 15:15:02.279226-06','2023-12-19 15:15:02.279226-06','www.amazon.com'),
+ (4179,'Blowfish Malibu',NULL,'B07T16NZP5','https://m.media-amazon.com/images/I/81BRFOqQoYL._AC_UL320_.jpg',4388,4.4,'$27.43','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Blowfish-Mamba-Sweet-Washed-Canvas/dp/B07T16NZP5/ref=sr_1_35?keywords=women%27s+shoes&qid=1703020500&sr=8-35',54,'2023-12-19 15:15:02.286192-06','2023-12-19 15:15:02.286192-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4180,'Clarks',NULL,'B01MU022AU','https://m.media-amazon.com/images/I/71v3si+LXjL._AC_UL320_.jpg',17597,4.5,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Womens-Emslie-Warren-Leather/dp/B01MU022AU/ref=sr_1_36?keywords=women%27s+shoes&qid=1703020500&sr=8-36',54,'2023-12-19 15:15:02.292767-06','2023-12-19 15:15:02.292767-06','www.amazon.com'),
+ (4181,'Skechers',NULL,'B07942YW88','https://m.media-amazon.com/images/I/71xwsh1oOzL._AC_UL320_.jpg',5012,4.3,'$41.38','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Seager-STAT-Scalloped-Engineered-Skech-Knit-Classic/dp/B07942YW88/ref=sr_1_37?keywords=women%27s+shoes&qid=1703020500&sr=8-37',54,'2023-12-19 15:15:02.299391-06','2023-12-19 15:15:02.299391-06','www.amazon.com'),
+ (4182,'Skechers',NULL,'B088KV2XTC','https://m.media-amazon.com/images/I/71OzzQUKNBL._AC_UL320_.jpg',1321,4.5,'$33.74','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Chill-Lugs-Urban-Loafer/dp/B088KV2XTC/ref=sr_1_38?keywords=women%27s+shoes&qid=1703020500&sr=8-38',54,'2023-12-19 15:15:02.306843-06','2023-12-19 15:15:02.306843-06','www.amazon.com'),
+ (4183,'Clarks',NULL,'B078GGN4MR','https://m.media-amazon.com/images/I/71PDLqWQhsL._AC_UL320_.jpg',2354,4.3,'$38.28','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Juliet-Leather-Synthetic/dp/B078GGN4MR/ref=sr_1_39?keywords=women%27s+shoes&qid=1703020500&sr=8-39',54,'2023-12-19 15:15:02.313374-06','2023-12-19 15:15:02.313374-06','www.amazon.com'),
+ (4184,'Clarks',NULL,'B0121QYJSE','https://m.media-amazon.com/images/I/813+WlOO32L._AC_UL320_.jpg',11620,4.4,'$40.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Ashland-Slip-Loafer/dp/B0121QYJSE/ref=sr_1_40?keywords=women%27s+shoes&qid=1703020500&sr=8-40',54,'2023-12-19 15:15:02.320359-06','2023-12-19 15:15:02.320359-06','www.amazon.com'),
+ (4185,'Keds',NULL,'B010EGKNVA','https://m.media-amazon.com/images/I/71mpCNnGHDL._AC_UL320_.jpg',8147,4.4,'$26.87','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keds-Womens-Kickstart-Fashion-Sneaker/dp/B010EGKNVA/ref=sr_1_41?keywords=women%27s+shoes&qid=1703020500&sr=8-41',54,'2023-12-19 15:15:02.327092-06','2023-12-19 15:15:02.327092-06','www.amazon.com'),
+ (4186,'adidas',NULL,'B07HRR5JWX','https://m.media-amazon.com/images/I/61XSBe3R-aL._AC_UL320_.jpg',14960,4.5,'$58.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Originals-Womens-Swift-Sneaker/dp/B07HRR5JWX/ref=sr_1_42?keywords=women%27s+shoes&qid=1703020500&sr=8-42',54,'2023-12-19 15:15:02.333728-06','2023-12-19 15:15:02.333728-06','www.amazon.com'),
+ (4187,'Dr. Scholl''s Shoes',NULL,'B07QW34QBK','https://m.media-amazon.com/images/I/619RqvQXPWL._AC_UL320_.jpg',3445,4.1,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Shoes-Womens-Microfiber/dp/B07QW34QBK/ref=sr_1_43?keywords=women%27s+shoes&qid=1703020500&sr=8-43',54,'2023-12-19 15:15:02.342011-06','2023-12-19 15:15:02.342011-06','www.amazon.com'),
+ (4188,'Nike',NULL,'B0059RVL2K','https://m.media-amazon.com/images/I/61Ivtyqn7PL._AC_UL320_.jpg',1422,4.5,'$64.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/NIKE-Roshe-Coral-Stardust-White/dp/B0059RVL2K/ref=sr_1_45?keywords=women%27s+shoes&qid=1703020500&sr=8-45',54,'2023-12-19 15:15:02.352391-06','2023-12-19 15:15:02.352391-06','www.amazon.com'),
+ (4189,'Dr. Scholl''s Shoes',NULL,'B07R1T2TYT','https://m.media-amazon.com/images/I/81jhabeTwzL._AC_UL320_.jpg',958,4.3,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Shoes-Brianna-Microfiber/dp/B07R1T2TYT/ref=sr_1_46?keywords=women%27s+shoes&qid=1703020500&sr=8-46',54,'2023-12-19 15:15:02.36086-06','2023-12-19 15:15:02.36086-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4190,'Keds',NULL,'B0961BZ676','https://m.media-amazon.com/images/I/61Tfb8DNHDL._AC_UL320_.jpg',536,4.3,'$42.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keds-Womens-Kickback-Sneaker-White/dp/B0961BZ676/ref=sr_1_47?keywords=women%27s+shoes&qid=1703020500&sr=8-47',54,'2023-12-19 15:15:02.367804-06','2023-12-19 15:15:02.367804-06','www.amazon.com'),
+ (4191,'BZees',NULL,'B07H6Q1J65','https://m.media-amazon.com/images/I/51+-SH01egL._AC_UL320_.jpg',4328,4.5,'$44.34','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BZees-Womens-Niche-Slip-Black/dp/B07H6Q1J65/ref=sr_1_48?keywords=women%27s+shoes&qid=1703020500&sr=8-48',54,'2023-12-19 15:15:02.374973-06','2023-12-19 15:15:02.374973-06','www.amazon.com'),
+ (4192,'adidas',NULL,'B09DXW4SK3','https://m.media-amazon.com/images/I/71WpfijAH+L._AC_UL320_.jpg',1376,4.4,'$39.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Womens-Puremotion-Running-Metallic/dp/B09DXW4SK3/ref=sr_1_49?keywords=women%27s+shoes&qid=1703020500&sr=8-49',54,'2023-12-19 15:15:02.381397-06','2023-12-19 15:15:02.381397-06','www.amazon.com'),
+ (4193,'LifeStride',NULL,'B07CR3BTT6','https://m.media-amazon.com/images/I/51ACgE-bXqL._AC_UL320_.jpg',3170,4.0,'$20.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LifeStride-Womens-Deja-Ballet-Black/dp/B07CR3BTT6/ref=sr_1_50?keywords=women%27s+shoes&qid=1703020500&sr=8-50',54,'2023-12-19 15:15:02.38821-06','2023-12-19 15:15:02.38821-06','www.amazon.com'),
+ (4194,'Clarks',NULL,'B0874LS1YX','https://m.media-amazon.com/images/I/71ovq1uTymL._AC_UL320_.jpg',2295,4.3,'$46.12','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-womens-Loafer-Tumbled-Leather/dp/B0874LS1YX/ref=sr_1_51?keywords=women%27s+shoes&qid=1703020500&sr=8-51',54,'2023-12-19 15:15:02.395138-06','2023-12-19 15:15:02.395138-06','www.amazon.com'),
+ (4195,'DREAM PAIRS',NULL,'B07SV35B11','https://m.media-amazon.com/images/I/71Si20WwdbL._AC_UL320_.jpg',6261,4.3,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DREAM-PAIRS-Platform-Sneakers-Wedge-SNKR-1/dp/B07SV35B11/ref=sr_1_52?keywords=women%27s+shoes&qid=1703020500&sr=8-52',54,'2023-12-19 15:15:02.401747-06','2023-12-19 15:15:02.401747-06','www.amazon.com'),
+ (4196,'Dr. Scholl''s Shoes',NULL,'B094CDRW7T','https://m.media-amazon.com/images/I/51P4xt2XliL._AC_UL320_.jpg',374,4.2,'$43.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Shoes-Sneaker-Microfiber/dp/B094CDRW7T/ref=sr_1_53?keywords=women%27s+shoes&qid=1703020500&sr=8-53',54,'2023-12-19 15:15:02.410499-06','2023-12-19 15:15:02.410499-06','www.amazon.com'),
+ (4197,'DREAM PAIRS',NULL,'B073H96BHL','https://m.media-amazon.com/images/I/61iSxV0-upL._AC_UL320_.jpg',17066,4.3,'$24.38','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DREAM-PAIRS-Womens-Revona-Nubuck/dp/B073H96BHL/ref=sr_1_54?keywords=women%27s+shoes&qid=1703020500&sr=8-54',54,'2023-12-19 15:15:02.416534-06','2023-12-19 15:15:02.416534-06','www.amazon.com'),
+ (4198,'PUMA',NULL,'B09VR3NRT6','https://m.media-amazon.com/images/I/619cQm5JaSL._AC_UL320_.jpg',502,4.5,'$40.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-Womens-Better-Prowl-Sneaker/dp/B09VR3NRT6/ref=sr_1_55?keywords=women%27s+shoes&qid=1703020500&sr=8-55',54,'2023-12-19 15:15:02.423819-06','2023-12-19 15:15:02.423819-06','www.amazon.com'),
+ (4199,'Bruno Marc',NULL,'B09NKJWZ3Z','https://m.media-amazon.com/images/I/61PD67FO3yL._AC_UL320_.jpg',3504,4.4,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bruno-Marc-SBLS225W-Comfortable-Lightweight/dp/B09NKJWZ3Z/ref=sr_1_56?keywords=women%27s+shoes&qid=1703020500&sr=8-56',54,'2023-12-19 15:15:02.429711-06','2023-12-19 15:15:02.429711-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4200,'Clarks',NULL,'B07GQ4QC1Q','https://m.media-amazon.com/images/I/71E4B0CAhtL._AC_UL320_.jpg',7793,4.3,'$36.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Juliet-Loafer-Leather/dp/B07GQ4QC1Q/ref=sr_1_57?keywords=women%27s+shoes&qid=1703020500&sr=8-57',54,'2023-12-19 15:15:02.455475-06','2023-12-19 15:15:02.455475-06','www.amazon.com'),
+ (4201,'New Balance',NULL,'B005ATNLF2','https://m.media-amazon.com/images/I/71xXFLETfxL._AC_UL320_.jpg',69975,4.4,'$33.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/New-Balance-FuelCore-Nergize-Training/dp/B005ATNLF2/ref=sr_1_58?keywords=women%27s+shoes&qid=1703020500&sr=8-58',54,'2023-12-19 15:15:02.462944-06','2023-12-19 15:15:02.462944-06','www.amazon.com'),
+ (4202,'Crocs',NULL,'B071VVHVGZ','https://m.media-amazon.com/images/I/61wC6rjFlML._AC_UL320_.jpg',7869,4.2,'$24.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Crocs-Womens-Work-Kadee-Black/dp/B071VVHVGZ/ref=sr_1_59?keywords=women%27s+shoes&qid=1703020500&sr=8-59',54,'2023-12-19 15:15:02.468983-06','2023-12-19 15:15:02.468983-06','www.amazon.com'),
+ (4203,'Dr. Scholl''s Shoes',NULL,'B005BI7S6U','https://m.media-amazon.com/images/I/71YtCD9h-EL._AC_UL320_.jpg',4658,4.3,'$50.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Womens-Slip-Ons-Loafer/dp/B005BI7S6U/ref=sr_1_60?keywords=women%27s+shoes&qid=1703020500&sr=8-60',54,'2023-12-19 15:15:02.47618-06','2023-12-19 15:15:02.47618-06','www.amazon.com'),
+ (4589,'OlimpiaFit Quick Dry Towel - 3 Size Pack of Lightweight Microfiber Travel Towels w/Bag - Fast Drying Towel Set for Camping, Beach, Gym, Backpacking, Sports, Yoga & Swim Use',NULL,'B075LKVP7R','https://m.media-amazon.com/images/I/71-HrLjjBeL._AC_UL320_.jpg',11955,4.7,'$8.93','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OlimpiaFit-Quick-Dry-Towel-Lightweight/dp/B075LKVP7R/ref=sr_1_101?keywords=travel+accessories&qid=1703020686&sr=8-101',57,'2023-12-19 15:18:08.117261-06','2023-12-19 15:18:08.117261-06','www.amazon.com'),
+ (4205,'Slow Man',NULL,'B07LF4RHXC','https://m.media-amazon.com/images/I/71Tz5Sk4dmL._AC_UL320_.jpg',99967,4.0,'$37.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzA4NDQ0MzYyNDQ1NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwMDA3ODQ0ODM0MDI6OjA6Og&url=%2FWomens-Walking-Shoes-Sock-Sneakers%2Fdp%2FB07LF4RHXC%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB07LF4RHXC%26pd_rd_r%3D6ee41f59-5d11-47f5-9c88-a77751f942ba%26pd_rd_w%3D2JB06%26pd_rd_wg%3D9GDRN%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:02.490171-06','2023-12-19 15:15:02.490171-06','www.amazon.com'),
+ (4206,'FRACORA',NULL,'B08B8RGWZG','https://m.media-amazon.com/images/I/71PbGGdQMrL._AC_UL320_.jpg',7455,4.2,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzA4NDQ0MzYyNDQ1NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwNDEyNDIzODM2MDI6OjE6Og&url=%2FFRACORA-Breathable-Leather-Walking-Beige-US8%2Fdp%2FB08B8RGWZG%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB08B8RGWZG%26pd_rd_r%3D6ee41f59-5d11-47f5-9c88-a77751f942ba%26pd_rd_w%3D2JB06%26pd_rd_wg%3D9GDRN%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:02.49635-06','2023-12-19 15:15:02.49635-06','www.amazon.com'),
+ (4219,'SPATI',NULL,'B09DKC7HF5','https://m.media-amazon.com/images/I/715XieV5PoL._AC_UL320_.jpg',306,4.0,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjIwMDAzMjEyMzM2MDQ5ODo6MDo6&url=%2FSPATI-Knitted-Footwear-Breathable-Numeric_9%2Fdp%2FB09DKC7HF5%2Fref%3Dsr_1_60_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-60-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.134998-06','2023-12-19 15:15:09.134998-06','www.amazon.com'),
+ (4313,'JBL',NULL,'B08PHJW4BD','https://m.media-amazon.com/images/I/714riq8vR-L._AC_UL320_.jpg',27184,4.8,'$49.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JBL-Clip-Bluetooth-Integrated-Waterproof/dp/B08PHJW4BD/ref=sr_1_43?keywords=outdoor&qid=1703020517&sr=8-43',55,'2023-12-19 15:15:18.76442-06','2023-12-19 15:15:18.76442-06','www.amazon.com'),
+ (4590,'VEEKTOMX Portable Charger with Built-in Cables - 10000mAh Power Bank for iPhone - Slim Fast Charge USB C Battery Pack - Small Travel Essentials Powerbank, Compatible with iPhone, Samsung, Android, etc',NULL,'B09B94C8H8','https://m.media-amazon.com/images/I/71-n6JtXs3L._AC_UL320_.jpg',1574,4.5,'$19.41','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Portable-Charger-10000mAh-outputs-Compatible/dp/B09B94C8H8/ref=sr_1_102?keywords=travel+accessories&qid=1703020686&sr=8-102',57,'2023-12-19 15:18:08.124259-06','2023-12-19 15:18:08.124259-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4208,'hash bubbie',NULL,'B09YCKJBYS','https://m.media-amazon.com/images/I/61we5BvjvVL._AC_UL320_.jpg',967,4.1,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzA4NDQ0MzYyNDQ1NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwNzU0NTc1OTE1OTg6OjM6Og&url=%2Fhash-bubbie-Comfortable-Leather-Nude-US6%2Fdp%2FB09YCKJBYS%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB09YCKJBYS%26pd_rd_r%3D6ee41f59-5d11-47f5-9c88-a77751f942ba%26pd_rd_w%3D2JB06%26pd_rd_wg%3D9GDRN%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:02.508857-06','2023-12-19 15:15:02.508857-06','www.amazon.com'),
+ (4204,'TERRIKAT',NULL,'B0BR3T55XN','https://m.media-amazon.com/images/I/71BLqIR2IHL._AC_UL320_.jpg',1267,4.2,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzA4NDQ0MzYyNDQ1NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAxMjc5Nzc0NzkyOTg6OjQ6Og&url=%2FTERRIKAT-Loafers-Comfort-Moccasins-1308-Hon6-5%2Fdp%2FB0BR3T55XN%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB0BR3T55XN%26pd_rd_r%3D6ee41f59-5d11-47f5-9c88-a77751f942ba%26pd_rd_w%3D2JB06%26pd_rd_wg%3D9GDRN%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:02.48334-06','2023-12-19 15:15:02.514894-06','www.amazon.com'),
+ (4209,'FUNKYMONKEY',NULL,'B08973Z67G','https://m.media-amazon.com/images/I/51T5A7959oL._AC_UL320_.jpg',7038,4.1,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfYXRmX25leHQ6MjAwMDQ0MTQxMjc0NTk4OjowOjo&url=%2FFUNKYMONKEY-Womens-Comfort-Walking-Driving%2Fdp%2FB08973Z67G%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',54,'2023-12-19 15:15:09.05288-06','2023-12-19 15:15:09.05288-06','www.amazon.com'),
+ (4210,'FUNKYMONKEY',NULL,'B0957861ZC','https://m.media-amazon.com/images/I/71VZv1Wzc1L._AC_UL320_.jpg',4354,4.4,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfYXRmX25leHQ6MjAwMDQ0MTQ5MjQ5ODk4OjowOjo&url=%2FFUNKYMONKEY-Canvas-Classic-Comfort-Sneaker%2Fdp%2FB0957861ZC%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',54,'2023-12-19 15:15:09.076078-06','2023-12-19 15:15:09.076078-06','www.amazon.com'),
+ (4211,'COOJOY',NULL,'B08G3WT8VG','https://m.media-amazon.com/images/I/61Pet0TtnsL._AC_UL320_.jpg',2187,4.7,'$42.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfYXRmX25leHQ6MzAwMTA0MzM4OTE1ODAyOjowOjo&url=%2FCOOJOY-Womens-Waterproof-Booties-Anti-Slip%2Fdp%2FB08G3WT8VG%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',54,'2023-12-19 15:15:09.082986-06','2023-12-19 15:15:09.082986-06','www.amazon.com'),
+ (4212,'HEAWISH',NULL,'B097K3VWHV','https://m.media-amazon.com/images/I/81aSIE2gzqL._AC_UL320_.jpg',3023,4.3,'$20.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfYXRmX25leHQ6MjAwMDcxNzk5MTMxMDk4OjowOjo&url=%2FHEAWISH-Womens-Comfortable-Crochet-Casual%2Fdp%2FB097K3VWHV%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',54,'2023-12-19 15:15:09.08876-06','2023-12-19 15:15:09.08876-06','www.amazon.com'),
+ (4213,'DREAM PAIRS',NULL,'B078PX6W2J','https://m.media-amazon.com/images/I/61lK-bfUocL._AC_UL320_.jpg',12759,4.3,'$36.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DREAM-PAIRS-Sole_Stretchy-Fashion-Elastic/dp/B078PX6W2J/ref=sr_1_53?keywords=women%27s+shoes&qid=1703020507&sr=8-53',54,'2023-12-19 15:15:09.094993-06','2023-12-19 15:15:09.094993-06','www.amazon.com'),
+ (4214,'TOMS',NULL,'B096PK2VJH','https://m.media-amazon.com/images/I/71AV637og1L._AC_UL320_.jpg',2536,4.5,'$28.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TOMS-Womens-Alpargata-Loafer-Flat/dp/B096PK2VJH/ref=sr_1_54?keywords=women%27s+shoes&qid=1703020507&sr=8-54',54,'2023-12-19 15:15:09.101305-06','2023-12-19 15:15:09.101305-06','www.amazon.com'),
+ (4215,'DREAM PAIRS',NULL,'B097P9N94W','https://m.media-amazon.com/images/I/71aVGFCvqQL._AC_UL320_.jpg',5877,4.4,'$30.35','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DREAM-PAIRS-Comfort-Oxfords-Loafers/dp/B097P9N94W/ref=sr_1_56?keywords=women%27s+shoes&qid=1703020507&sr=8-56',54,'2023-12-19 15:15:09.107803-06','2023-12-19 15:15:09.107803-06','www.amazon.com'),
+ (4216,'Skechers',NULL,'B07MZYDLDY','https://m.media-amazon.com/images/I/81bc5+ZTzUL._AC_UL320_.jpg',41938,4.5,'$40.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Walk-5-15901-Black/dp/B07MZYDLDY/ref=sr_1_57?keywords=women%27s+shoes&qid=1703020507&sr=8-57',54,'2023-12-19 15:15:09.114521-06','2023-12-19 15:15:09.114521-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4217,'Skechers',NULL,'B073WH9XD8','https://m.media-amazon.com/images/I/81ofYchE-sL._AC_UL320_.jpg',46620,4.3,'$42.36','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Squad-Service-black/dp/B073WH9XD8/ref=sr_1_58?keywords=women%27s+shoes&qid=1703020507&sr=8-58',54,'2023-12-19 15:15:09.122042-06','2023-12-19 15:15:09.122042-06','www.amazon.com'),
+ (4218,'DADAWEN',NULL,'B09MJVRKS1','https://m.media-amazon.com/images/I/714vdyv+FNL._AC_UL320_.jpg',12861,4.1,'$34.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjIwMDA0MTIzMzM3NDQ5ODo6MDo6&url=%2FDADAWEN-Classic-T-Strap-Platform-Mid-Heel%2Fdp%2FB09MJVRKS1%2Fref%3Dsr_1_59_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-59-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.128276-06','2023-12-19 15:15:09.128276-06','www.amazon.com'),
+ (4207,'TERRIKAT',NULL,'B0C8TTPYFX','https://m.media-amazon.com/images/I/71ko88IH3WL._AC_UL320_.jpg',311,4.2,'$41.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTozNzA4NDQ0MzYyNDQ1NzE3OjE3MDMwMjA1MDA6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwMjAzMzk4MzAyMDI6OjI6Og&url=%2FTERRIKAT-Classic-Leather-Lightweight-1202-Lv6-5%2Fdp%2FB0C8TTPYFX%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB0C8TTPYFX%26pd_rd_r%3D6ee41f59-5d11-47f5-9c88-a77751f942ba%26pd_rd_w%3D2JB06%26pd_rd_wg%3D9GDRN%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3D614PPZTWS9JZKEHNW0B5%26qid%3D1703020500%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:02.502881-06','2023-12-19 15:15:09.140828-06','www.amazon.com'),
+ (4220,'Greatonu',NULL,'B0BW9657XG','https://m.media-amazon.com/images/I/714Kfta6yRL._AC_UL320_.jpg',42,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjMwMDA0NzA3MTYxMzYwMjo6MDo6&url=%2FGreatonu-Womens-Heeled-Closed-Wedding%2Fdp%2FB0BW9657XG%2Fref%3Dsr_1_62_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-62-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.146938-06','2023-12-19 15:15:09.146938-06','www.amazon.com'),
+ (4221,'adidas',NULL,'B071S6MDD9','https://m.media-amazon.com/images/I/81zc8i+8qfL._AC_UL320_.jpg',73398,4.6,'$21.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Performance-Womens-Cloudfoam-Running/dp/B071S6MDD9/ref=sr_1_63?keywords=women%27s+shoes&qid=1703020507&sr=8-63',54,'2023-12-19 15:15:09.152896-06','2023-12-19 15:15:09.152896-06','www.amazon.com'),
+ (4222,'Dansko',NULL,'B08BS1XTDR','https://m.media-amazon.com/images/I/61A-Q2-PVQL._AC_UL320_.jpg',1594,4.6,'$129.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dansko-Womens-Rowan-Nubuck-Sandals/dp/B08BS1XTDR/ref=sr_1_64?keywords=women%27s+shoes&qid=1703020507&sr=8-64',54,'2023-12-19 15:15:09.159953-06','2023-12-19 15:15:09.159953-06','www.amazon.com'),
+ (4223,'Under Armour',NULL,'B0BGQPZSWM','https://m.media-amazon.com/images/I/51Y9Ti2Io-L._AC_UL320_.jpg',2156,4.4,'$50.67','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Under-Armour-Womens-Surge-Running/dp/B0BGQPZSWM/ref=sr_1_65?keywords=women%27s+shoes&qid=1703020507&sr=8-65',54,'2023-12-19 15:15:09.166325-06','2023-12-19 15:15:09.166325-06','www.amazon.com'),
+ (4224,'TOMS',NULL,'B096PHZH81','https://m.media-amazon.com/images/I/41Qy5XzIYuL._AC_UL320_.jpg',3440,4.6,'$36.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TOMS-Womens-Alpargata-Loafer-Black/dp/B096PHZH81/ref=sr_1_66?keywords=women%27s+shoes&qid=1703020507&sr=8-66',54,'2023-12-19 15:15:09.174455-06','2023-12-19 15:15:09.174455-06','www.amazon.com'),
+ (4225,'Kapsen',NULL,'B092MK9LRM','https://m.media-amazon.com/images/I/81ApKBQE8cS._AC_UL320_.jpg',5397,4.2,'$38.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjIwMDA3MTUxMzA2NDU4MTo6MDo6&url=%2FKapsen-Running-Breathable-Sneakers-Trainers%2Fdp%2FB092MK9LRM%2Fref%3Dsr_1_67_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-67-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.181121-06','2023-12-19 15:15:09.181121-06','www.amazon.com'),
+ (4226,'YDN',NULL,'B085HFD9T6','https://m.media-amazon.com/images/I/41SsYhVgG6L._AC_UL320_.jpg',175,4.0,'$49.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjIwMDE1MjIyNzczNjY5ODo6MDo6&url=%2FYDN-Women-Kitten-Pointed-Office%2Fdp%2FB085HFD9T6%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.18785-06','2023-12-19 15:15:09.18785-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4227,'YHOON',NULL,'B08812WT8F','https://m.media-amazon.com/images/I/911-PYemqPL._AC_UL320_.jpg',13972,4.3,'$28.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjIwMDAyNzg5NzA5MjA5ODo6MDo6&url=%2FYHOON-Walking-Breathable-Lightweight-Sneakers%2Fdp%2FB08812WT8F%2Fref%3Dsr_1_69_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-69-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.19449-06','2023-12-19 15:15:09.19449-06','www.amazon.com'),
+ (4228,'VenusCelia',NULL,'B08PSZB6VQ','https://m.media-amazon.com/images/I/61ZIg6s2w7L._AC_UL320_.jpg',18713,4.3,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MzExMDI5OTUxMzY3NzE3OjE3MDMwMjA1MDg6c3BfbXRmOjMwMDA2MzU5NTE4OTYwMjo6MDo6&url=%2FVenusCelia-Womens-Natural-Comfort-Walking%2Fdp%2FB08PSZB6VQ%2Fref%3Dsr_1_70_sspa%3Fkeywords%3Dwomen%2527s%2Bshoes%26qid%3D1703020507%26sr%3D8-70-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',54,'2023-12-19 15:15:09.201079-06','2023-12-19 15:15:09.201079-06','www.amazon.com'),
+ (4229,'adidas',NULL,'B096HKWND4','https://m.media-amazon.com/images/I/71oxeigDtJL._AC_UL320_.jpg',1246,4.5,'$32.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Womens-SUMMERVENT-Spikeless-Metallic/dp/B096HKWND4/ref=sr_1_71?keywords=women%27s+shoes&qid=1703020507&sr=8-71',54,'2023-12-19 15:15:09.208324-06','2023-12-19 15:15:09.208324-06','www.amazon.com'),
+ (4230,'Dr. Scholl''s Shoes',NULL,'B07YVS6SNV','https://m.media-amazon.com/images/I/818yz0JQgOL._AC_UL320_.jpg',754,4.4,'$60.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Womens-Sneaker-Soft/dp/B07YVS6SNV/ref=sr_1_72?keywords=women%27s+shoes&qid=1703020507&sr=8-72',54,'2023-12-19 15:15:09.215091-06','2023-12-19 15:15:09.215091-06','www.amazon.com'),
+ (4231,'Dr. Scholl''s Shoes',NULL,'B07YVSX9SC','https://m.media-amazon.com/images/I/712WROTAewL._AC_UL320_.jpg',6340,4.1,'$54.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Shoes-Womens-Webster/dp/B07YVSX9SC/ref=sr_1_73?keywords=women%27s+shoes&qid=1703020507&sr=8-73',54,'2023-12-19 15:15:09.222007-06','2023-12-19 15:15:09.222007-06','www.amazon.com'),
+ (4232,'Clarks',NULL,'B00AZORVYO','https://m.media-amazon.com/images/I/61+5lIbPVzL._AC_UL320_.jpg',10293,4.3,'$45.38','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Ashland-Bubble-Loafer/dp/B00AZORVYO/ref=sr_1_74?keywords=women%27s+shoes&qid=1703020507&sr=8-74',54,'2023-12-19 15:15:09.228566-06','2023-12-19 15:15:09.228566-06','www.amazon.com'),
+ (4233,'Clarks',NULL,'B09P226FHK','https://m.media-amazon.com/images/I/51Z3+-Un2XL._AC_UL320_.jpg',497,4.3,'$38.36','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Womens-Breeze-Loafer-Synthetic/dp/B09P226FHK/ref=sr_1_75?keywords=women%27s+shoes&qid=1703020507&sr=8-75',54,'2023-12-19 15:15:09.235136-06','2023-12-19 15:15:09.235136-06','www.amazon.com'),
+ (4234,'Clarks',NULL,'B08HJPC2LP','https://m.media-amazon.com/images/I/71Gh1VFMcfS._AC_UL320_.jpg',1720,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Clarks-Womens-Poppy-Loafer-Tumbled/dp/B08HJPC2LP/ref=sr_1_76?keywords=women%27s+shoes&qid=1703020507&sr=8-76',54,'2023-12-19 15:15:09.241497-06','2023-12-19 15:15:09.241497-06','www.amazon.com'),
+ (4235,'LifeStride',NULL,'B0983Y1SC7','https://m.media-amazon.com/images/I/712BEpKBxIL._AC_UL320_.jpg',474,4.4,'$38.66','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LifeStride-Womens-Impact-Loafer-Black/dp/B0983Y1SC7/ref=sr_1_77?keywords=women%27s+shoes&qid=1703020507&sr=8-77',54,'2023-12-19 15:15:09.248421-06','2023-12-19 15:15:09.248421-06','www.amazon.com'),
+ (4236,'Amazon Essentials',NULL,'B088K98J1J','https://m.media-amazon.com/images/I/61PRjU6VDML._AC_UL320_.jpg',11009,4.1,'$22.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Loafer-Black/dp/B088K98J1J/ref=sr_1_78?keywords=women%27s+shoes&qid=1703020507&sr=8-78',54,'2023-12-19 15:15:09.255407-06','2023-12-19 15:15:09.255407-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4237,'Skechers',NULL,'B000VHYTXQ','https://m.media-amazon.com/images/I/81i1QgYAcYL._AC_UL320_.jpg',4362,4.5,'$47.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Parties-Mate-Chocolate-Leather/dp/B000VHYTXQ/ref=sr_1_80?keywords=women%27s+shoes&qid=1703020507&sr=8-80',54,'2023-12-19 15:15:09.261332-06','2023-12-19 15:15:09.261332-06','www.amazon.com'),
+ (4238,'New Balance',NULL,'B07B414Q8J','https://m.media-amazon.com/images/I/61alcr5GlXL._AC_UL320_.jpg',32433,4.5,'$64.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/New-Balance-Womens-Comfort-Trainer/dp/B07B414Q8J/ref=sr_1_81?keywords=women%27s+shoes&qid=1703020507&sr=8-81',54,'2023-12-19 15:15:09.268031-06','2023-12-19 15:15:09.268031-06','www.amazon.com'),
+ (4239,'Nike',NULL,'B097TH69WC','https://m.media-amazon.com/images/I/51PNqBi2fxL._AC_UL320_.jpg',1077,4.0,'$62.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nike-Womens-Vision-Running-WHITE-WHITE/dp/B097TH69WC/ref=sr_1_82?keywords=women%27s+shoes&qid=1703020507&sr=8-82',54,'2023-12-19 15:15:09.274063-06','2023-12-19 15:15:09.274063-06','www.amazon.com'),
+ (4240,'Clarks',NULL,'B01N5CWR9H','https://m.media-amazon.com/images/I/81A1zhXPg2L._AC_UL320_.jpg',7747,4.4,'$40.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Adriel-Viola-Leather/dp/B01N5CWR9H/ref=sr_1_83?keywords=women%27s+shoes&qid=1703020507&sr=8-83',54,'2023-12-19 15:15:09.281307-06','2023-12-19 15:15:09.281307-06','www.amazon.com'),
+ (4241,'DC',NULL,'B09PL664QY','https://m.media-amazon.com/images/I/61A7HZpnp7L._AC_UL320_.jpg',506,4.5,'$39.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DC-Womens-Gaveler-Casual-Sneakers/dp/B09PL664QY/ref=sr_1_84?keywords=women%27s+shoes&qid=1703020507&sr=8-84',54,'2023-12-19 15:15:09.28771-06','2023-12-19 15:15:09.28771-06','www.amazon.com'),
+ (4242,'ASICS',NULL,'B09WBWJGSK','https://m.media-amazon.com/images/I/51WFb62GsbL._AC_UL320_.jpg',2591,4.5,'$39.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Womens-JOLT-Running-Shoes/dp/B09WBWJGSK/ref=sr_1_85?keywords=women%27s+shoes&qid=1703020507&sr=8-85',54,'2023-12-19 15:15:09.294291-06','2023-12-19 15:15:09.294291-06','www.amazon.com'),
+ (4243,'Clarks',NULL,'B01NCKJITQ','https://m.media-amazon.com/images/I/618gwqa0oiL._AC_UL320_.jpg',8160,4.5,'$35.42','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CLARKS-Womens-Emslie-Lulin-Dress/dp/B01NCKJITQ/ref=sr_1_86?keywords=women%27s+shoes&qid=1703020507&sr=8-86',54,'2023-12-19 15:15:09.300501-06','2023-12-19 15:15:09.300501-06','www.amazon.com'),
+ (4244,'Skechers',NULL,'B07H5VGV67','https://m.media-amazon.com/images/I/71AIs8qfKDL._AC_UL320_.jpg',21797,4.4,'$52.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Stand-Womens-Sneaker-Black/dp/B07H5VGV67/ref=sr_1_87?keywords=women%27s+shoes&qid=1703020507&sr=8-87',54,'2023-12-19 15:15:09.306967-06','2023-12-19 15:15:09.306967-06','www.amazon.com'),
+ (4245,'New Balance',NULL,'B08KGZF778','https://m.media-amazon.com/images/I/71vCni0v3+S._AC_UL320_.jpg',29487,4.5,'$84.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/New-Balance-Womens-Running-Munsell/dp/B08KGZF778/ref=sr_1_88?keywords=women%27s+shoes&qid=1703020507&sr=8-88',54,'2023-12-19 15:15:09.314313-06','2023-12-19 15:15:09.314313-06','www.amazon.com'),
+ (4246,'Skechers',NULL,'B01N6MGRF4','https://m.media-amazon.com/images/I/71ZxG6OS9XL._AC_UL320_.jpg',22623,4.4,'$44.38','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Womens-Ghenter-Bronaugh-Service/dp/B01N6MGRF4/ref=sr_1_89?keywords=women%27s+shoes&qid=1703020507&sr=8-89',54,'2023-12-19 15:15:09.321242-06','2023-12-19 15:15:09.321242-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4109,'Life Fitness',NULL,'B01EOLI8X6','https://m.media-amazon.com/images/I/51s+aIUfyjL._AC_UL320_.jpg',15,3.4,'$1.679','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Life-Fitness-Row-HX-Trainer/dp/B01EOLI8X6/ref=sr_1_81?keywords=men%27s+shoes&qid=1703020492&sr=8-81',53,'2023-12-19 15:14:54.374643-06','2023-12-19 15:15:09.327109-06','www.amazon.com'),
+ (4247,'LifeStride',NULL,'B06XQHDK9X','https://m.media-amazon.com/images/I/51NBQKtlncL._AC_UL320_.jpg',1056,4.0,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LifeStride-Womens-Juliana-Stretch-Wedge/dp/B06XQHDK9X/ref=sr_1_91?keywords=women%27s+shoes&qid=1703020507&sr=8-91',54,'2023-12-19 15:15:09.33425-06','2023-12-19 15:15:09.33425-06','www.amazon.com'),
+ (4248,'adidas',NULL,'B09MDQC87D','https://m.media-amazon.com/images/I/61YCY5vETML._AC_UL320_.jpg',41,4.3,'$30.33','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/adidas-Womens-SOLARMOTION-Bliss-Orange/dp/B09MDQC87D/ref=sr_1_92?keywords=women%27s+shoes&qid=1703020507&sr=8-92',54,'2023-12-19 15:15:09.340947-06','2023-12-19 15:15:09.340947-06','www.amazon.com'),
+ (4249,'ASICS',NULL,'B0B4PHSKX8','https://m.media-amazon.com/images/I/61818SrwLhL._AC_UL320_.jpg',1294,4.5,'$119.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ASICS-Womens-Gel-Nimbus-Running-Piedmont/dp/B0B4PHSKX8/ref=sr_1_93?keywords=women%27s+shoes&qid=1703020507&sr=8-93',54,'2023-12-19 15:15:09.347671-06','2023-12-19 15:15:09.347671-06','www.amazon.com'),
+ (4250,'Hey Dude',NULL,'B0B9YTK57L','https://m.media-amazon.com/images/I/513RCvXQbIL._AC_UL320_.jpg',52883,4.7,'$55.24','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hey-Dude-Chambray-Comfortable-Light-Weight/dp/B0B9YTK57L/ref=sr_1_94?keywords=women%27s+shoes&qid=1703020507&sr=8-94',54,'2023-12-19 15:15:09.354739-06','2023-12-19 15:15:09.354739-06','www.amazon.com'),
+ (4251,'PUMA',NULL,'B01C3LLGJ2','https://m.media-amazon.com/images/I/61+DxOI+QML._AC_UL320_.jpg',47029,4.4,'$57.27','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PUMA-Womens-Cross-Trainer-Silver-Beetroot/dp/B01C3LLGJ2/ref=sr_1_95?keywords=women%27s+shoes&qid=1703020507&sr=8-95',54,'2023-12-19 15:15:09.360748-06','2023-12-19 15:15:09.360748-06','www.amazon.com'),
+ (4252,'Skechers',NULL,'B08RWP1FQK','https://m.media-amazon.com/images/I/61UMHhtAKML._AC_UL320_.jpg',1315,4.6,'$74.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Skechers-Cushioning-Elite-Lace-Up-White/dp/B08RWP1FQK/ref=sr_1_96?keywords=women%27s+shoes&qid=1703020507&sr=8-96',54,'2023-12-19 15:15:09.366947-06','2023-12-19 15:15:09.366947-06','www.amazon.com'),
+ (4253,'Dr. Scholl''s Shoes',NULL,'B08CCTT6BN','https://m.media-amazon.com/images/I/61xi8D0vX+L._AC_UL320_.jpg',349,4.5,'$70.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dr-Scholls-Shoes-Laurence-Microfiber/dp/B08CCTT6BN/ref=sr_1_97?keywords=women%27s+shoes&qid=1703020507&sr=8-97',54,'2023-12-19 15:15:09.373655-06','2023-12-19 15:15:09.373655-06','www.amazon.com'),
+ (4254,'New Balance',NULL,'B09YGPD9PD','https://m.media-amazon.com/images/I/717CthrzLaL._AC_UL320_.jpg',239,4.2,'$59.31','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/New-Balance-Womens-Running-Raincloud/dp/B09YGPD9PD/ref=sr_1_98?keywords=women%27s+shoes&qid=1703020507&sr=8-98',54,'2023-12-19 15:15:09.380895-06','2023-12-19 15:15:09.380895-06','www.amazon.com'),
+ (4255,'Lugz',NULL,'B0998C35RV','https://m.media-amazon.com/images/I/51XD9G8CsmL._AC_UL320_.jpg',777,4.1,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Lugz-Womens-Clipper-Slip-Resistant-Service/dp/B0998C35RV/ref=sr_1_100?keywords=women%27s+shoes&qid=1703020507&sr=8-100',54,'2023-12-19 15:15:09.392299-06','2023-12-19 15:15:09.392299-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4256,'Amazon Essentials',NULL,'B082QGDKFM','https://m.media-amazon.com/images/I/618yR05NaIL._AC_UL320_.jpg',1946,3.9,'$19.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Amazon-Essentials-Womens-Casual-Sneaker/dp/B082QGDKFM/ref=sr_1_101?keywords=women%27s+shoes&qid=1703020507&sr=8-101',54,'2023-12-19 15:15:09.399743-06','2023-12-19 15:15:09.399743-06','www.amazon.com'),
+ (4257,'LifeStride',NULL,'B081HGFBKT','https://m.media-amazon.com/images/I/81Y5ePij1eL._AC_UL320_.jpg',14198,4.3,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LifeStride-Womens-Giovanna-Pumps-Black/dp/B081HGFBKT/ref=sr_1_102?keywords=women%27s+shoes&qid=1703020507&sr=8-102',54,'2023-12-19 15:15:09.406203-06','2023-12-19 15:15:09.406203-06','www.amazon.com'),
+ (4258,'Avia',NULL,'B07B4K4P9L','https://m.media-amazon.com/images/I/61J0Bu181wL._AC_UL320_.jpg',2579,3.9,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Avia-Womens-Avi-Focus-Service-Metallic/dp/B07B4K4P9L/ref=sr_1_103?keywords=women%27s+shoes&qid=1703020507&sr=8-103',54,'2023-12-19 15:15:09.412655-06','2023-12-19 15:15:09.412655-06','www.amazon.com'),
+ (4259,'LifeStride',NULL,'B07TCB6YF8','https://m.media-amazon.com/images/I/61OqDtwZKTL._AC_UL320_.jpg',398,4.2,'$20.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LifeStride-Zendaya-Womens-Slip-Navy/dp/B07TCB6YF8/ref=sr_1_104?keywords=women%27s+shoes&qid=1703020507&sr=8-104',54,'2023-12-19 15:15:09.4185-06','2023-12-19 15:15:09.4185-06','www.amazon.com'),
+ (4260,'Nike',NULL,'B0B5ZK28KJ','https://m.media-amazon.com/images/I/71D1i43ID3L._AC_UL320_.jpg',273,4.3,'$50.31','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nike-Experience-Running-Trainers-Thistle/dp/B0B5ZK28KJ/ref=sr_1_105?keywords=women%27s+shoes&qid=1703020507&sr=8-105',54,'2023-12-19 15:15:09.424842-06','2023-12-19 15:15:09.424842-06','www.amazon.com'),
+ (4261,'Brooks',NULL,'B09MGDDTLF','https://m.media-amazon.com/images/I/81XnL5xkZoL._AC_UL320_.jpg',3936,4.6,'$64.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Brooks-Womens-Launch-Black-Purple/dp/B09MGDDTLF/ref=sr_1_106?keywords=women%27s+shoes&qid=1703020507&sr=8-106',54,'2023-12-19 15:15:09.43124-06','2023-12-19 15:15:09.43124-06','www.amazon.com'),
+ (4262,'ALTRA',NULL,'B09Y2DDQ27','https://m.media-amazon.com/images/I/71bltQyVj3L._AC_UL320_.jpg',143,4.3,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ALTRA-Womens-AL0A7R7O-Provision-Running/dp/B09Y2DDQ27/ref=sr_1_107?keywords=women%27s+shoes&qid=1703020507&sr=8-107',54,'2023-12-19 15:15:09.43786-06','2023-12-19 15:15:09.43786-06','www.amazon.com'),
+ (4263,'Nike',NULL,'B0BNJJVHVW','https://m.media-amazon.com/images/I/61ohg9b4o9L._AC_UL320_.jpg',4977,4.3,'$58.02','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nike-Womens-Revolution-Nature-Running/dp/B0BNJJVHVW/ref=sr_1_108?keywords=women%27s+shoes&qid=1703020507&sr=8-108',54,'2023-12-19 15:15:09.444401-06','2023-12-19 15:15:09.444401-06','www.amazon.com'),
+ (4591,'Mini Portable Charger USB-C Power Bank, 5200mAh Portable Phone Charger, Compact Plug in Battery Pack Compatible with iPhone 15/15Plus/15Pro/15Pro Max Samsung S23/S22 Moto iPad Pro Android Phone etc',NULL,'B0CHJR4NRP','https://m.media-amazon.com/images/I/71+87+ZW3aL._AC_UL320_.jpg',119,4.6,'$23.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Portable-Charger-5200mAh-Compact-Compatible/dp/B0CHJR4NRP/ref=sr_1_103?keywords=travel+accessories&qid=1703020686&sr=8-103',57,'2023-12-19 15:18:08.131013-06','2023-12-19 15:18:08.131013-06','www.amazon.com'),
+ (4265,'DeYashopin',NULL,'B0B91KZC9N','https://m.media-amazon.com/images/I/61I2mXzxNGL._AC_UL320_.jpg',1197,4.3,'$37.77','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4Mjg2NzIyOTY1MzA3NzE3OjE3MDMwMjA1MDg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwODY2NTM2MTMyMDI6OjA6Og&url=%2FDeYashopin-Leisure-Comfort-Microfiber-Black-9-5%2Fdp%2FB0B91KZC9N%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB0B91KZC9N%26pd_rd_r%3D28f5bec8-3b24-4c0b-b307-13b25d64069f%26pd_rd_w%3DcjGIW%26pd_rd_wg%3DIj2Sh%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DNV2Q33K70K3PFE8DQE6V%26qid%3D1703020507%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-49-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:09.459318-06','2023-12-19 15:15:09.459318-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4266,'Slow Man',NULL,'B07LFF2VV1','https://m.media-amazon.com/images/I/61qUXs7zhIL._AC_UL320_.jpg',99967,4.0,'$37.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4Mjg2NzIyOTY1MzA3NzE3OjE3MDMwMjA1MDg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwMTY3NjQxMzI5MDI6OjE6Og&url=%2FWomens-Walking-Shoes-Sock-Sneakers%2Fdp%2FB07LFF2VV1%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB07LFF2VV1%26pd_rd_r%3D28f5bec8-3b24-4c0b-b307-13b25d64069f%26pd_rd_w%3DcjGIW%26pd_rd_wg%3DIj2Sh%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DNV2Q33K70K3PFE8DQE6V%26qid%3D1703020507%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-50-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1%26smid%3DA102YGJJFP9LY',54,'2023-12-19 15:15:09.46676-06','2023-12-19 15:15:09.46676-06','www.amazon.com'),
+ (4267,'hash bubbie',NULL,'B09YCR8T29','https://m.media-amazon.com/images/I/7156F1HU8aL._AC_UL320_.jpg',967,4.1,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4Mjg2NzIyOTY1MzA3NzE3OjE3MDMwMjA1MDg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwNzU0NTc1OTI0OTg6OjI6Og&url=%2Fhash-bubbie-Comfortable-Leather-Black-US8%2Fdp%2FB09YCR8T29%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB09YCR8T29%26pd_rd_r%3D28f5bec8-3b24-4c0b-b307-13b25d64069f%26pd_rd_w%3DcjGIW%26pd_rd_wg%3DIj2Sh%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DNV2Q33K70K3PFE8DQE6V%26qid%3D1703020507%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-51-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:09.473651-06','2023-12-19 15:15:09.473651-06','www.amazon.com'),
+ (4268,'HEAWISH',NULL,'B09WJ4SV3W','https://m.media-amazon.com/images/I/71NBToNGoiL._AC_UL320_.jpg',6521,4.3,'$23.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4Mjg2NzIyOTY1MzA3NzE3OjE3MDMwMjA1MDg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjozMDAwNTM2MzIwODQ4MDI6OjM6Og&url=%2FHEAWISH-Womens-Floral-Ballet-Flowers%2Fdp%2FB09WJ4SV3W%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB09WJ4SV3W%26pd_rd_r%3D28f5bec8-3b24-4c0b-b307-13b25d64069f%26pd_rd_w%3DcjGIW%26pd_rd_wg%3DIj2Sh%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DNV2Q33K70K3PFE8DQE6V%26qid%3D1703020507%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-52-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:09.481298-06','2023-12-19 15:15:09.481298-06','www.amazon.com'),
+ (4264,'kufeiti',NULL,'B08LSKSNJV','https://m.media-amazon.com/images/I/81XrW90Ys+L._AC_UL320_.jpg',8321,4.0,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4Mjg2NzIyOTY1MzA3NzE3OjE3MDMwMjA1MDg6c3Bfc2VhcmNoX3RoZW1hdGljX2J0ZjoyMDAwNjE5Mjc5ODUwOTg6OjQ6Og&url=%2Fkufeiti-Sneakers-Fashion-Comfortable-Elastic%2Fdp%2FB08LSKSNJV%2Fref%3Dsxbs_pa_sp_search_thematic_btf_sspa%3Fcontent-id%3Damzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%253Aamzn1.sym.c950d26b-f218-41e6-a496-534825ce2131%26cv_ct_cx%3Dwomen%2527s%2Bshoes%26keywords%3Dwomen%2527s%2Bshoes%26pd_rd_i%3DB08LSKSNJV%26pd_rd_r%3D28f5bec8-3b24-4c0b-b307-13b25d64069f%26pd_rd_w%3DcjGIW%26pd_rd_wg%3DIj2Sh%26pf_rd_p%3Dc950d26b-f218-41e6-a496-534825ce2131%26pf_rd_r%3DNV2Q33K70K3PFE8DQE6V%26qid%3D1703020507%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-53-50a2b317-b617-44c1-b7a6-daec194a2368-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWNfYnRm%26psc%3D1',54,'2023-12-19 15:15:09.451873-06','2023-12-19 15:15:09.487665-06','www.amazon.com'),
+ (4269,'Blink Silicone Camera Skin for Indoor and Outdoor – White',NULL,'B08B4648C4','https://m.media-amazon.com/images/I/41SA0K4wfWL._AC_UL320_.jpg',637,4.4,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9hdGY6MjAwMDMxOTcyMDA3MDcxOjowOjo&url=%2FBlink-Silicone-Camera-Indoor-Outdoor%2Fdp%2FB08B4648C4%2Fref%3Dsr_1_1_ffob_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',55,'2023-12-19 15:15:18.477684-06','2023-12-19 15:15:18.477684-06','www.amazon.com'),
+ (4270,'Outdoor Projector, Mini Projector for Home Theater, 1080P and 240" Supported Movie Projector 7500 L Portable Home Video Projector Compatible with Smartphone/TV Stick/PS4/PC/Laptop',NULL,'B0991YNM7B','https://m.media-amazon.com/images/I/6107KCDjItL._AC_UL320_.jpg',2855,4.4,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/%E3%80%90Updated%E3%80%91-Projector-Supported-Compatible-Smartphone/dp/B0991YNM7B/ref=sr_1_2?keywords=outdoor&qid=1703020517&sr=8-2',55,'2023-12-19 15:15:18.48568-06','2023-12-19 15:15:18.48568-06','www.amazon.com'),
+ (4271,'Throw Throw Burrito by Exploding Kittens: Extreme Outdoor Edition - A Dodgeball Card Game - Family-Friendly Party Card Games for Adults, Teens & Kids',NULL,'B01ASIBA5M','https://m.media-amazon.com/images/I/81EIsOyR3gL._AC_UL320_.jpg',38599,4.7,'$25.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Throw-Burrito-Extreme-Exploding-Dodgeball/dp/B01ASIBA5M/ref=sr_1_3?keywords=outdoor&qid=1703020517&sr=8-3',55,'2023-12-19 15:15:18.492251-06','2023-12-19 15:15:18.492251-06','www.amazon.com'),
+ (4272,'Bamworld',NULL,'B09234GQXV','https://m.media-amazon.com/images/I/81ldZ1TV-5L._AC_UL320_.jpg',14014,4.5,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bamworld-Stands-Outdoor-Multiple-Balcony/dp/B09234GQXV/ref=sr_1_4?keywords=outdoor&qid=1703020517&sr=8-4',55,'2023-12-19 15:15:18.498665-06','2023-12-19 15:15:18.498665-06','www.amazon.com'),
+ (4592,'So-Mine Commuter Essential Bag | Attaches to Airline Seat and Car Pocket | Travel Organizer | Slim Profile | 6 Pockets | 2 Cable Loops | 1 Zipper Pocket | Fits on Roller Bag Handle',NULL,'B081B9ZGLK','https://m.media-amazon.com/images/I/914IUIsoBfL._AC_UL320_.jpg',616,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Commuter-Essential-Organizer-Designed-Accessory/dp/B081B9ZGLK/ref=sr_1_104?keywords=travel+accessories&qid=1703020686&sr=8-104',57,'2023-12-19 15:18:08.137229-06','2023-12-19 15:18:08.137229-06','www.amazon.com'),
+ (4274,'Heavy Duty Patio Sofa Cover Waterproof, Mrrihand 2-Seater Outdoor Sofa Loveseat Cover, Outdoor Patio Furniture Cover for Winter with Air Vent and Handles, 60" L×34" D×30" H, Black',NULL,'B09MSZVXH8','https://m.media-amazon.com/images/I/71Y1YXMeviL._AC_UL320_.jpg',1302,4.5,'$25.62','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NTgzOTg4NTkyMzQyNzE3OjE3MDMwMjA1MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA1NTc5OTQxNTg5ODo6MDo6&url=%2FWaterproof-Mrrihand-2-Seater-Furniture-60%2Fdp%2FB09MSZVXH8%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Doutdoor%26keywords%3Doutdoor%26pd_rd_i%3DB09MSZVXH8%26pd_rd_r%3D0cfffc08-0b5e-4c2c-9ddf-f2993af9944b%26pd_rd_w%3D6krn2%26pd_rd_wg%3DqLO9o%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DB66DG5J15A2HQ95FX630%26qid%3D1703020517%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',55,'2023-12-19 15:15:18.511373-06','2023-12-19 15:15:18.511373-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4275,'Outdoor Faucet Covers for Winter Freeze Protection, 2 Pack 6.7" x 11" Hose Bib Covers for Winter, Water Spigot Covers Winter Insulated, Pipe Wrap Insulation Cover Socks Outside Faucet Freeze Protector',NULL,'B0CCRPWB6Z','https://m.media-amazon.com/images/I/81jhQC+Dq3L._AC_UL320_.jpg',97,4.3,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NTgzOTg4NTkyMzQyNzE3OjE3MDMwMjA1MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA4NTEzMDQxNjgwMjo6MTo6&url=%2FOutdoor-Protection-Insulated-Insulation-Protector%2Fdp%2FB0CCRPWB6Z%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Doutdoor%26keywords%3Doutdoor%26pd_rd_i%3DB0CCRPWB6Z%26pd_rd_r%3D0cfffc08-0b5e-4c2c-9ddf-f2993af9944b%26pd_rd_w%3D6krn2%26pd_rd_wg%3DqLO9o%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DB66DG5J15A2HQ95FX630%26qid%3D1703020517%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',55,'2023-12-19 15:15:18.517234-06','2023-12-19 15:15:18.62771-06','www.amazon.com'),
+ (4276,'KFY outdoor storage box,XXL 230 gallon Resin Large deck box waterproof and sunproof Loackable Suitable for patio furniture and outdoor garden tool storage(black)',NULL,'B0CN46WCK5','https://m.media-amazon.com/images/I/71cxQqvF07L._AC_UL320_.jpg',27,4.3,'$319.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NTgzOTg4NTkyMzQyNzE3OjE3MDMwMjA1MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA4NzIzOTY2NTgwMjo6Mjo6&url=%2FKFY-waterproof-Loackable-furniture-storage%25EF%25BC%2588black%25EF%25BC%2589%2Fdp%2FB0CN46WCK5%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Doutdoor%26keywords%3Doutdoor%26pd_rd_i%3DB0CN46WCK5%26pd_rd_r%3D0cfffc08-0b5e-4c2c-9ddf-f2993af9944b%26pd_rd_w%3D6krn2%26pd_rd_wg%3DqLO9o%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DB66DG5J15A2HQ95FX630%26qid%3D1703020517%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',55,'2023-12-19 15:15:18.52477-06','2023-12-19 15:15:18.52477-06','www.amazon.com'),
+ (4277,'Jayus Double Sided US Marine Corps Military Flags 3x5 Outdoor- Vivid Colors 200D USMC Flag Banner with 2 Grommets',NULL,'B09QXLPJ3D','https://m.media-amazon.com/images/I/61ql85SchlS._AC_UL320_.jpg',574,4.7,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NTgzOTg4NTkyMzQyNzE3OjE3MDMwMjA1MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE3MDQ5OTUyNTU5ODo6Mzo6&url=%2FDouble-Military-Outdoor-Colors-Grommets%2Fdp%2FB09QXLPJ3D%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Doutdoor%26keywords%3Doutdoor%26pd_rd_i%3DB09QXLPJ3D%26pd_rd_r%3D0cfffc08-0b5e-4c2c-9ddf-f2993af9944b%26pd_rd_w%3D6krn2%26pd_rd_wg%3DqLO9o%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DB66DG5J15A2HQ95FX630%26qid%3D1703020517%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',55,'2023-12-19 15:15:18.530513-06','2023-12-19 15:15:18.530513-06','www.amazon.com'),
+ (4273,'AmeriTop Solar Lights Outdoor 300 LED 6500K Motion Sensor Lights Cordless; 5 Adjustable Heads, 360° Wide Angle Illumination, IP65 Waterproof, Security Flood Light for Patio Yard Garden 2 Pack',NULL,'B0957ZMRKZ','https://m.media-amazon.com/images/I/81nVCfpDkLL._AC_UL320_.jpg',3147,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0NTgzOTg4NTkyMzQyNzE3OjE3MDMwMjA1MTc6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDA5NzA4MDUyMzYzMTo6NDo6&url=%2FSolar-Lights-Outdoor-Adjustable-Illumination%2Fdp%2FB0957ZMRKZ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%253Aamzn1.sym.882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26cv_ct_cx%3Doutdoor%26keywords%3Doutdoor%26pd_rd_i%3DB0957ZMRKZ%26pd_rd_r%3D0cfffc08-0b5e-4c2c-9ddf-f2993af9944b%26pd_rd_w%3D6krn2%26pd_rd_wg%3DqLO9o%26pf_rd_p%3D882a4bd1-3fd3-4961-90f6-8abc45a77ab4%26pf_rd_r%3DB66DG5J15A2HQ95FX630%26qid%3D1703020517%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-957b5332-dff9-4ebb-812a-1c4282368112-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',55,'2023-12-19 15:15:18.505592-06','2023-12-19 15:15:18.535686-06','www.amazon.com'),
+ (4278,'ROZATO',NULL,'B09RN1ZH6L','https://m.media-amazon.com/images/I/71bg5Fu-fLL._AC_UL320_.jpg',816,4.6,'$64.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ROZATO-Tabletop-Fireplace-Portable-Outdoor/dp/B09RN1ZH6L/ref=sr_1_5?keywords=outdoor&qid=1703020517&sr=8-5',55,'2023-12-19 15:15:18.541509-06','2023-12-19 15:15:18.541509-06','www.amazon.com'),
+ (4279,'Brightever',NULL,'B0BGL7W99N','https://m.media-amazon.com/images/I/8117DTT-UJL._AC_UL320_.jpg',1115,4.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Brightever-%E3%80%90%F0%9D%90%94%F0%9D%90%A9%F0%9D%90%A0%F0%9D%90%AB%F0%9D%90%9A%F0%9D%90%9D%F0%9D%90%9E%F0%9D%90%9D%E3%80%91-Lights-Outdoor-Waterproof/dp/B0BGL7W99N/ref=sr_1_6?keywords=outdoor&qid=1703020517&sr=8-6',55,'2023-12-19 15:15:18.54739-06','2023-12-19 15:15:18.54739-06','www.amazon.com'),
+ (4280,'4 Pack Firefly LightsSolar Garden Lights Upgraded 8 LED, Solar Firefly Lights Outdoor Waterproof, Breathing Mode High Flexibility Firefly Garden Lights Solar Outdoor for Patio,Yard, Path',NULL,'B0C2Q3MC6G','https://m.media-amazon.com/images/I/81cYd6a4rsL._AC_UL320_.jpg',203,4.2,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LightsSolar-Upgraded-Waterproof-Breathing-Flexibility/dp/B0C2Q3MC6G/ref=sr_1_7?keywords=outdoor&qid=1703020517&sr=8-7',55,'2023-12-19 15:15:18.553982-06','2023-12-19 15:15:18.553982-06','www.amazon.com'),
+ (4281,'Light Bulb Security Camera, 5G/2.4G WiFi Security Cameras Wireless Outdoor with Motion Detection and Alarm, Two-Way Talk, Color Night Vision, Human Detection, Bulb Camera Work with Alex (2 Pack)',NULL,'B0CMCWYDZK','https://m.media-amazon.com/images/I/71PYyoaXE4L._AC_UL320_.jpg',59,4.8,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Security-Cameras-Wireless-Outdoor-Detection/dp/B0CMCWYDZK/ref=sr_1_8?keywords=outdoor&qid=1703020517&sr=8-8',55,'2023-12-19 15:15:18.560148-06','2023-12-19 15:15:18.560148-06','www.amazon.com'),
+ (4282,'Brightever',NULL,'B0B4NT4J28','https://m.media-amazon.com/images/I/71JM1dsFQ1L._AC_UL320_.jpg',2803,4.7,'$49.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Brightever-Shatterproof-Waterproof-Backyard-Dimmable/dp/B0B4NT4J28/ref=sr_1_9?keywords=outdoor&qid=1703020517&sr=8-9',55,'2023-12-19 15:15:18.566104-06','2023-12-19 15:15:18.566104-06','www.amazon.com'),
+ (4283,'TONULAX',NULL,'B09YD454KV','https://m.media-amazon.com/images/I/71oGQ4MIPsL._AC_UL320_.jpg',6975,4.5,'$37.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/TONULAX-Solar-Garden-Lights-Decorative/dp/B09YD454KV/ref=sr_1_10?keywords=outdoor&qid=1703020517&sr=8-10',55,'2023-12-19 15:15:18.572983-06','2023-12-19 15:15:18.572983-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4296,'VOLISUN',NULL,'B0BDRL222C','https://m.media-amazon.com/images/I/81Vx6Gmp-DL._AC_UL320_.jpg',1293,4.5,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/VOLISUN-Triangle-Waterproof-Outdoor-Walkway/dp/B0BDRL222C/ref=sr_1_24?keywords=outdoor&qid=1703020517&sr=8-24',55,'2023-12-19 15:15:18.65879-06','2023-12-19 15:15:18.65879-06','www.amazon.com'),
+ (4284,'Solar Outdoor Lights, [2 Packs] 225 LED 3 Head Adjustable Motion Sensor Lights, 2500LM 330° Wide Angle Solar Flood Lights, IP65 Waterproof Wall Lamp Security Lights With 16.5Ft Cable for Garden Yard',NULL,'B0C5DGS4TC','https://m.media-amazon.com/images/I/71eFoWEvgNL._AC_UL320_.jpg',581,4.2,'$29.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MzAwMDUwOTkxMjc3NDAyOjowOjo&url=%2FOutdoor-Lights-Adjustable-Waterproof-Security%2Fdp%2FB0C5DGS4TC%2Fref%3Dsr_1_11_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.578821-06','2023-12-19 15:15:18.578821-06','www.amazon.com'),
+ (4285,'Solar Lights Outdoor, 106 LED 3000LM Solar Powered Motion Sensor Flood Lights with Remote, Dusk to Dawn Led Solar Security Wall Lights with 16.5Ft Cable IP65 Waterproof for Outside, Garage, 2 Pack',NULL,'B09VBWGM8V','https://m.media-amazon.com/images/I/81Ju9wRoBaL._AC_UL320_.jpg',2513,4.3,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MjAwMDY1MzY2NzUzMzk4OjowOjo&url=%2FOutdoor-Powered-Security-Waterproof-Outside%2Fdp%2FB09VBWGM8V%2Fref%3Dsr_1_12_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-12-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.585069-06','2023-12-19 15:15:18.585069-06','www.amazon.com'),
+ (4286,'Pyramid Patio Heater 48,000 BTU Outdoor Heater with Cover, Propane Patio Heater, Pyramid Outdoor Heaters Quartz Glass Tube Patio Heaters for Outdoor Use with Wheels, Ground Nails, Detachable Table',NULL,'B09B76HHLX','https://m.media-amazon.com/images/I/61TqePoaNnL._AC_UL320_.jpg',147,4.2,'$239.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MjAwMDc5ODA0MDI3NDQxOjowOjo&url=%2FPyramid-Outdoor-Propane-Heaters-Detachable%2Fdp%2FB09B76HHLX%2Fref%3Dsr_1_13_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-13-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.591076-06','2023-12-19 15:15:18.591076-06','www.amazon.com'),
+ (4287,'Bridika Solar Fence Lights 8 Colors, Warm White, Cool White and RGB, Bright Deck Lights Solar Outdoor Waterproof, Dusk to Dawn Fence Lights for Backyard, Patio, Railing, Wall, Step (12 Pack)',NULL,'B0C52RGHJG','https://aax-us-iad.amazon.com/e/loi/imp?b=JOaQdb-dk9QbIFXDdyk1CM4AAAGMg-7XlQEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICC06m6N',196,4.2,'$67.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/ROaQdb-dk9QbIFXDdyk1CM4AAAGMg-7XUQEAAAH2AQBvbm9fdHhuX2JpZDUgICBvbm9fdHhuX2ltcDEgICC06m6N/https://www.amazon.com/Bridika-Outdoor-Waterproof-Backyard-Railing/dp/B0C52RGHJG/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=outdoor&keywords=outdoor&pd_rd_i=B0C52RGHJG&pd_rd_r=0cfffc08-0b5e-4c2c-9ddf-f2993af9944b&pd_rd_w=kL79c&pd_rd_wg=qLO9o&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=B66DG5J15A2HQ95FX630&qid=1703020517&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',55,'2023-12-19 15:15:18.596911-06','2023-12-19 15:15:18.596911-06','www.amazon.comhttps:'),
+ (4288,'SOLPEX',NULL,'B07YC8PVF1','https://m.media-amazon.com/images/I/710SfWdkgoS._AC_UL320_.jpg',12357,4.3,'$29.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Solpex-Lights-Outdoor-Waterproof-Pathway/dp/B07YC8PVF1/ref=sr_1_15?keywords=outdoor&qid=1703020517&sr=8-15',55,'2023-12-19 15:15:18.60297-06','2023-12-19 15:15:18.60297-06','www.amazon.com'),
+ (4289,'Kingsyard',NULL,'B0C274KF4T','https://m.media-amazon.com/images/I/71sIRh3D8LL._AC_UL320_.jpg',3150,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kingsyard-Hummingbird-Outdoors-Feeding-Included/dp/B0C274KF4T/ref=sr_1_16?keywords=outdoor&qid=1703020517&sr=8-16',55,'2023-12-19 15:15:18.60933-06','2023-12-19 15:15:18.60933-06','www.amazon.com'),
+ (4290,'WYZE',NULL,'B0BWSPP9HH','https://m.media-amazon.com/images/I/51VfHNLKklL._AC_UL320_.jpg',8675,4.3,'$64.74','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WYZE-IP65-Rated-Security-Compatible-Assistant/dp/B0BWSPP9HH/ref=sr_1_17?keywords=outdoor&qid=1703020517&sr=8-17',55,'2023-12-19 15:15:18.615688-06','2023-12-19 15:15:18.615688-06','www.amazon.com'),
+ (4291,'GCI Outdoor',NULL,'B07N6YD8BK','https://m.media-amazon.com/images/I/81uACa+Dd-L._AC_UL320_.jpg',81130,4.7,'$60.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GCI-Outdoor-Rocker-Collapsible-Rocking/dp/B07N6YD8BK/ref=sr_1_18?keywords=outdoor&qid=1703020517&sr=8-18',55,'2023-12-19 15:15:18.621753-06','2023-12-19 15:15:18.621753-06','www.amazon.com'),
+ (4292,'Diyel',NULL,'B0BLSH6JM1','https://m.media-amazon.com/images/I/51+ZcEmxNuL._AC_UL320_.jpg',83,4.4,'$149.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MzAwMDA1NTg0NTA3MDAyOjowOjo&url=%2FDiyel-Gooseneck-Farmhouse-Exterior-Industrial%2Fdp%2FB0BLSH6JM1%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.634276-06','2023-12-19 15:15:18.634276-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4293,'LayinSun',NULL,'B0CL7KK6CN','https://m.media-amazon.com/images/I/81xxfH8Pw5L._AC_UL320_.jpg',14,4.9,'$849.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MzAwMDc0ODczMzM1OTAyOjowOjo&url=%2FLayinSun-Pieces-Outdoor-Furniture-Rattan%2Fdp%2FB0CL7KK6CN%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.64124-06','2023-12-19 15:15:18.64124-06','www.amazon.com'),
+ (4294,'JACKYLED',NULL,'B0CDH4D9J3','https://m.media-amazon.com/images/I/81T9KoMxlcL._AC_UL320_.jpg',118,4.4,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MzAwMDYxNzI0NzU2MjAyOjowOjo&url=%2FJACKYLED-Outside-Adjustable-Waterproof-Security%2Fdp%2FB0CDH4D9J3%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.647119-06','2023-12-19 15:15:18.647119-06','www.amazon.com'),
+ (4295,'Best Choice Products',NULL,'B0CP2V63JT','https://m.media-amazon.com/images/I/716SiWEx-JL._AC_UL320_.jpg',3,5.0,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Best-Choice-Products-Basketball-Adjustable/dp/B0CP2V63JT/ref=sr_1_23?keywords=outdoor&qid=1703020517&sr=8-23',55,'2023-12-19 15:15:18.65297-06','2023-12-19 15:15:18.65297-06','www.amazon.com'),
+ (4297,'EAST OAK',NULL,'B0C6TJBKJM','https://m.media-amazon.com/images/I/51QEhdB3hoL._AC_UL320_.jpg',289,4.4,'$149.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/EAST-OAK-Double-Layer-Stainless-Commercial/dp/B0C6TJBKJM/ref=sr_1_25?keywords=outdoor&qid=1703020517&sr=8-25',55,'2023-12-19 15:15:18.665702-06','2023-12-19 15:15:18.665702-06','www.amazon.com'),
+ (4298,'DenicMic',NULL,'B0BYZF8F96','https://m.media-amazon.com/images/I/81239Yh+PzL._AC_UL320_.jpg',67,4.3,'$29.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MzAwMDE2NjU4MTE2MjAyOjowOjo&url=%2FDenicMic-Outdoor-Flexible-Waterproof-Decorations%2Fdp%2FB0BYZF8F96%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.671649-06','2023-12-19 15:15:18.671649-06','www.amazon.com'),
+ (4299,'Kullavik',NULL,'B0CKDMZ4N8','https://m.media-amazon.com/images/I/81zFv4UB7iL._AC_UL320_.jpg',179,4.9,'$899.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToyMzU5NDQ2MzQ3MTY3MTc6MTcwMzAyMDUxNzpzcF9tdGY6MzAwMDg1ODY2NTQ5NzAyOjowOjo&url=%2FKullavik-Furniture-55000BTU-Sectional-Conversation%2Fdp%2FB0CKDMZ4N8%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020517%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:18.676866-06','2023-12-19 15:15:18.676866-06','www.amazon.com'),
+ (4300,'PENXUA',NULL,'B09NR2RZQW','https://m.media-amazon.com/images/I/81XNC5AA35L._AC_UL320_.jpg',3013,4.4,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PENXUA-Waterproof-Cardinals-Hummingbird-Decoration/dp/B09NR2RZQW/ref=sr_1_30?keywords=outdoor&qid=1703020517&sr=8-30',55,'2023-12-19 15:15:18.683604-06','2023-12-19 15:15:18.683604-06','www.amazon.com'),
+ (4301,'Garden Solar Ball Lights Outdoor Waterproof, 50 LED Cracked Glass Globe Solar Power Ground Lights for Path Yard Patio Lawn, Christmas Decoration Landscape Warm White(2 Pack 4.7'''')',NULL,'B08ZYY5BVX','https://m.media-amazon.com/images/I/81r0F2rRXOL._AC_UL320_.jpg',1163,4.2,'$29.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kooboe-Outdoor-Waterproof-Walkway-Decoration/dp/B08ZYY5BVX/ref=sr_1_31?keywords=outdoor&qid=1703020517&sr=8-31',55,'2023-12-19 15:15:18.689645-06','2023-12-19 15:15:18.689645-06','www.amazon.com'),
+ (4302,'Philips',NULL,'B07YBF2M7H','https://m.media-amazon.com/images/I/71jRqA9z8fL._AC_UL320_.jpg',1312,4.7,'$7.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Philips-Extension-Christmas-SPS1033GE-27/dp/B07YBF2M7H/ref=sr_1_32?keywords=outdoor&qid=1703020517&sr=8-32',55,'2023-12-19 15:15:18.695632-06','2023-12-19 15:15:18.695632-06','www.amazon.com'),
+ (4303,'Nacome',NULL,'B091ZFL4X5','https://m.media-amazon.com/images/I/71Mq0xq6M4L._AC_UL320_.jpg',8462,4.5,'$28.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Nacome-Garden-Statue-Figurine-Succulent/dp/B091ZFL4X5/ref=sr_1_33?keywords=outdoor&qid=1703020517&sr=8-33',55,'2023-12-19 15:15:18.701765-06','2023-12-19 15:15:18.701765-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4304,'BN-LINK',NULL,'B0CHR9HH2D','https://m.media-amazon.com/images/I/61QBcrv1GTL._AC_UL320_.jpg',37,5.0,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BN-LINK-Extension-Resistant-Landscaping-Decorations/dp/B0CHR9HH2D/ref=sr_1_34?keywords=outdoor&qid=1703020517&sr=8-34',55,'2023-12-19 15:15:18.707685-06','2023-12-19 15:15:18.707685-06','www.amazon.com'),
+ (4305,'All-New Blink Outdoor 4 Floodlight Camera – Wire-free smart security camera, 700 lumens, two-year battery life, HD live view, enhanced motion detection, Works with Alexa- 1 camera system',NULL,'B0BBX45V5B','https://m.media-amazon.com/images/I/41B0SP8h2nL._AC_UL320_.jpg',324,4.3,'$95.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/All-New-Blink-Outdoor-Floodlight-Camera/dp/B0BBX45V5B/ref=sr_1_35?keywords=outdoor&qid=1703020517&sr=8-35',55,'2023-12-19 15:15:18.714276-06','2023-12-19 15:15:18.714276-06','www.amazon.com'),
+ (4306,'Devoko',NULL,'B09N3JFSR4','https://m.media-amazon.com/images/I/81UMJ-Dn-XL._AC_UL320_.jpg',1930,4.3,'$89.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Devoko-Waterproof-Lockable-Container-Furniture/dp/B09N3JFSR4/ref=sr_1_36?keywords=outdoor&qid=1703020517&sr=8-36',55,'2023-12-19 15:15:18.721502-06','2023-12-19 15:15:18.721502-06','www.amazon.com'),
+ (4307,'Indoor Outdoor Thermometer Hygrometer Wireless Weather Stations, Temperature Humidity Monitor Battery Powered Inside Outside Thermometer with 330ft Range Remote Sensor and Adjustable Backlight',NULL,'B0CJJKWRFC','https://m.media-amazon.com/images/I/71mHCq1H2SL._AC_UL320_.jpg',67,4.5,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Thermometer-Hygrometer-Temperature-Adjustable-Backlight/dp/B0CJJKWRFC/ref=sr_1_37?keywords=outdoor&qid=1703020517&sr=8-37',55,'2023-12-19 15:15:18.727361-06','2023-12-19 15:15:18.727361-06','www.amazon.com'),
+ (4308,'DEWENWILS',NULL,'B0C69HM61K','https://m.media-amazon.com/images/I/81aPLSEUyTL._AC_UL320_.jpg',15388,4.6,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DEWENWILS-Christmas-Waterproof-Grounded-Electrical/dp/B0C69HM61K/ref=sr_1_38?keywords=outdoor&qid=1703020517&sr=8-38',55,'2023-12-19 15:15:18.734104-06','2023-12-19 15:15:18.734104-06','www.amazon.com'),
+ (4309,'Franklin Sports',NULL,'B06XTW1BND','https://m.media-amazon.com/images/I/61ZLEHX1FsL._AC_UL320_.jpg',16773,4.7,'$9.88','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Franklin-Sports-X-40-Pickleballs-Approved/dp/B06XTW1BND/ref=sr_1_39?keywords=outdoor&qid=1703020517&sr=8-39',55,'2023-12-19 15:15:18.740734-06','2023-12-19 15:15:18.740734-06','www.amazon.com'),
+ (4310,'Kingsyard',NULL,'B0BFDXX8JX','https://m.media-amazon.com/images/I/71-LQi2SZHL._AC_UL320_.jpg',909,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kingsyard-Hummingbird-Feeding-Outdoors-Included/dp/B0BFDXX8JX/ref=sr_1_40?keywords=outdoor&qid=1703020517&sr=8-40',55,'2023-12-19 15:15:18.746261-06','2023-12-19 15:15:18.746261-06','www.amazon.com'),
+ (4311,'Taylor',NULL,'B000H6E7FG','https://m.media-amazon.com/images/I/71XmpFo8SpL._AC_UL320_.jpg',294,4.4,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Taylor-Precision-Products-Thermometer-12-Inch/dp/B000H6E7FG/ref=sr_1_41?keywords=outdoor&qid=1703020517&sr=8-41',55,'2023-12-19 15:15:18.752445-06','2023-12-19 15:15:18.752445-06','www.amazon.com'),
+ (4312,'Govee',NULL,'B0CCYTJR9G','https://m.media-amazon.com/images/I/81y-wQMa2SL._AC_UL320_.jpg',222,4.7,'$89.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Govee-Christmas-Decorations-Waterproof-Lighting/dp/B0CCYTJR9G/ref=sr_1_42?keywords=outdoor&qid=1703020517&sr=8-42',55,'2023-12-19 15:15:18.758906-06','2023-12-19 15:15:18.758906-06','www.amazon.com'),
+ (4314,'GIGALUMI',NULL,'B0CKPJPZZH','https://m.media-amazon.com/images/I/81CMC2OYCAL._AC_UL320_.jpg',9,4.9,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GIGALUMI-Statues-Figurine-Birthday-Decoration/dp/B0CKPJPZZH/ref=sr_1_44?keywords=outdoor&qid=1703020517&sr=8-44',55,'2023-12-19 15:15:18.770925-06','2023-12-19 15:15:18.770925-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4315,'iBirdie',NULL,'B075ZRJ263','https://m.media-amazon.com/images/I/71WMttbXIoL._AC_UL320_.jpg',18895,4.7,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Outdoor-Waterproof-Weatherproof-Outside-Screen/dp/B075ZRJ263/ref=sr_1_45?keywords=outdoor&qid=1703020517&sr=8-45',55,'2023-12-19 15:15:18.77747-06','2023-12-19 15:15:18.77747-06','www.amazon.com'),
+ (4316,'That White People',NULL,'B085D7SZ8T','https://m.media-amazon.com/images/I/81kzY73I9-L._AC_UL320_.jpg',81,3.4,'$0.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Outdoors/dp/B085D7SZ8T/ref=sr_1_46?keywords=outdoor&qid=1703020517&sr=8-46',55,'2023-12-19 15:15:18.782897-06','2023-12-19 15:15:18.782897-06','www.amazon.com'),
+ (4317,'4 Pack BlueX LED A21 Red Green Light Bulbs - 15W (120Watt Equivalent) - E26 Base Red Green LED Red Bulb, Party Decoration, Porch, Home Lighting, Holiday Lighting',NULL,'B0C4C4SL5J','https://m.media-amazon.com/images/I/71r1dgoUOoL._AC_UL320_.jpg',1826,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pack-BlueX-Green-Light-Bulbs/dp/B0C4C4SL5J/ref=sr_1_47?keywords=outdoor&qid=1703020517&sr=8-47',55,'2023-12-19 15:15:18.789846-06','2023-12-19 15:15:18.789846-06','www.amazon.com'),
+ (4318,'Brightown',NULL,'B0B9WNG2F6','https://m.media-amazon.com/images/I/81s-KNWvOhL._AC_UL320_.jpg',219,4.4,'$79.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Brightown-Firewood-Waterproof-Adjustable-Fireplace/dp/B0B9WNG2F6/ref=sr_1_48?keywords=outdoor&qid=1703020517&sr=8-48',55,'2023-12-19 15:15:18.795917-06','2023-12-19 15:15:18.795917-06','www.amazon.com'),
+ (4319,'Rolling Grilling Baskets, Grill Baskets for Outdoor Grill, BBQ Grill Baskets, Stainless Steel Grill Accessories for Veggies, Fish, Fries, Shrimp and Chicken (2-PCS)',NULL,'B0CCJYFPHS','https://m.media-amazon.com/images/I/81yWQAsSWaL._AC_UL320_.jpg',25,4.6,'$10.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rolling-Grilling-Baskets-Stainless-Accessories/dp/B0CCJYFPHS/ref=sr_1_49?keywords=outdoor&qid=1703020517&sr=8-49',55,'2023-12-19 15:15:18.80179-06','2023-12-19 15:15:18.80179-06','www.amazon.com'),
+ (4321,'URAGO',NULL,'B09PYY9436','https://m.media-amazon.com/images/I/81EYZnKuUaL._AC_UL320_.jpg',6018,4.3,'$34.34','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/URAGO-Waterproof-Landscape-Lighting-Decorative/dp/B09PYY9436/ref=sr_1_51?keywords=outdoor&qid=1703020517&sr=8-51',55,'2023-12-19 15:15:18.815684-06','2023-12-19 15:15:18.815684-06','www.amazon.com'),
+ (4322,'Flemoon',NULL,'B09NLW5HMX','https://m.media-amazon.com/images/I/61fJba15DJL._AC_UL320_.jpg',2302,4.6,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Flemoon-Electrical-Waterproof-Weatherproof-Decoration/dp/B09NLW5HMX/ref=sr_1_52?keywords=outdoor&qid=1703020517&sr=8-52',55,'2023-12-19 15:15:18.821817-06','2023-12-19 15:15:18.821817-06','www.amazon.com'),
+ (4323,'Rolling Grill Baskets for Outdoor Grilling : 2 Pcs Stainless Steel Grill Mesh, Rolling Grill Baskets for Outdoor Grill, Portable Grill Nets Cylinder for Shrimp, Meat Barbecue Camping Picnic with Forks',NULL,'B0C9QFQ76F','https://m.media-amazon.com/images/I/811XOCIAO4L._AC_UL320_.jpg',237,4.5,'$27.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Rolling-Grill-Baskets-Outdoor-Grilling/dp/B0C9QFQ76F/ref=sr_1_53?keywords=outdoor&qid=1703020517&sr=8-53',55,'2023-12-19 15:15:18.828154-06','2023-12-19 15:15:18.828154-06','www.amazon.com'),
+ (4324,'Rowing Machine Cover, Fitness Equipment Protective Cover and Oxford Waterproof Fabric are The Ideal Choice for Indoor and Outdoor use(Black)',NULL,'B07SXC32JW','https://m.media-amazon.com/images/I/61FxOffjTqL._AC_UL320_.jpg',286,4.5,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/International-Equipment-Protective-Waterproof-use%EF%BC%88Black%EF%BC%89/dp/B07SXC32JW/ref=sr_1_54?keywords=outdoor&qid=1703020517&sr=8-54',55,'2023-12-19 15:15:18.833804-06','2023-12-19 15:15:18.833804-06','www.amazon.com'),
+ (4325,'AcuRite',NULL,'B000A3IMP2','https://m.media-amazon.com/images/I/612kC-gghPL._AC_UL320_.jpg',29249,4.6,'$5.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/AcuRite-00850A2-Capacity-Easy-Read-Magnifying/dp/B000A3IMP2/ref=sr_1_55?keywords=outdoor&qid=1703020517&sr=8-55',55,'2023-12-19 15:15:18.84046-06','2023-12-19 15:15:18.84046-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4327,'WILSON',NULL,'B091MBQYPH','https://m.media-amazon.com/images/I/914I6wrUEiS._AC_UL320_.jpg',3281,4.6,'$35.77','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wilson-Authentic-Indoor-Outdoor-Basketball/dp/B091MBQYPH/ref=sr_1_57?keywords=outdoor&qid=1703020517&sr=8-57',55,'2023-12-19 15:15:18.853824-06','2023-12-19 15:15:18.853824-06','www.amazon.com'),
+ (4328,'Outdoor String Lights 48FT, Outdoor Lights Waterproof ETL Listed with 18 Shatterproof Bulbs, Personalized 8 Lighting Modes Remote Control Patio Lights for Patio Decor Porch Balcony Backyard Party',NULL,'B0C33RNZP4','https://m.media-amazon.com/images/I/6172ml0FY3L._AC_UL320_.jpg',167,4.3,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Waterproof-Shatterproof-Personalized-Lighting-Backyard/dp/B0C33RNZP4/ref=sr_1_58?keywords=outdoor&qid=1703020517&sr=8-58',55,'2023-12-19 15:15:18.860876-06','2023-12-19 15:15:18.860876-06','www.amazon.com'),
+ (4329,'The HC Companies',NULL,'B08ZQM19C6','https://m.media-amazon.com/images/I/41NUY8c8cAS._AC_UL320_.jpg',8473,4.5,'$1.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HC-Companies-CNA06000DE1C024LRDGW-planters-Dusty/dp/B08ZQM19C6/ref=sr_1_59?keywords=outdoor&qid=1703020517&sr=8-59',55,'2023-12-19 15:15:18.867229-06','2023-12-19 15:15:18.867229-06','www.amazon.com'),
+ (4330,'Simple Green',NULL,'B0098QN9SC','https://m.media-amazon.com/images/I/81-q-UfjbOL._AC_UL320_.jpg',9942,4.6,'$12.38','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Simple-Outdoor-Eliminator-Gallon-Refill/dp/B0098QN9SC/ref=sr_1_60?keywords=outdoor&qid=1703020517&sr=8-60',55,'2023-12-19 15:15:18.874829-06','2023-12-19 15:15:18.874829-06','www.amazon.com'),
+ (4331,'Muse Garden Hummingbird Feeders for Outdoors Hanging, Hummingbird Gifts for Women, Garden Decor Backyard Decor, Blown Glass Hummingbird Feeder, Unique Gardening Gifts for Older Women, 32OZ, Nebula',NULL,'B089D3NJ32','https://aax-us-iad.amazon.com/e/loi/imp?b=JDfnmQTg2xa4OsEdECYayIcAAAGMg-7XrwEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICAyzaaY',5926,4.7,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RDfnmQTg2xa4OsEdECYayIcAAAGMg-7XaQEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICAyzaaY/https://www.amazon.com/Muse-Garden-Hummingbird-Outdoors-Containing/dp/B089D3NJ32/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b%3Aamzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&cv_ct_cx=outdoor&keywords=outdoor&pd_rd_i=B089D3NJ32&pd_rd_r=8dfc5eda-4dd5-4c71-8c35-99b784d61bab&pd_rd_w=chA7V&pd_rd_wg=hjcXq&pf_rd_p=e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&pf_rd_r=B66DG5J15A2HQ95FX630&qid=1703020517&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-a61ee601-6e56-4862-a8a2-1d3da5a5406f',55,'2023-12-19 15:15:18.881652-06','2023-12-19 15:15:18.881652-06','www.amazon.comhttps:'),
+ (4332,'ALLPOWERS',NULL,'B0CG162ZPY','https://m.media-amazon.com/images/I/61geOSR4FUL._AC_UL320_.jpg',40,4.1,'$1.599','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfYXRmX25leHQ6MzAwMDM4ODEzMDA2MjAyOjowOjo&url=%2FALLPOWERS-Generator-Portable-Function-Emergency%2Fdp%2FB0CG162ZPY%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',55,'2023-12-19 15:15:25.348397-06','2023-12-19 15:15:25.348397-06','www.amazon.com'),
+ (4333,'Rilyson',NULL,'B0BRKVQCZ5','https://m.media-amazon.com/images/I/71Kx1Dc0CaL._AC_UL320_.jpg',67,4.5,'$1.049','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfYXRmX25leHQ6MjAwMTE4MTYyMDcxNjk4OjowOjo&url=%2FRilyson-Wicker-Rocking-Swivel-Chairs%2Fdp%2FB0BRKVQCZ5%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',55,'2023-12-19 15:15:25.370791-06','2023-12-19 15:15:25.370791-06','www.amazon.com'),
+ (4334,'yuxiangBBQ',NULL,'B07VY7YBGW','https://m.media-amazon.com/images/I/616pnF7snOL._AC_UL320_.jpg',663,4.3,'$159.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfYXRmX25leHQ6MjAwMTAwMDMyNTU1ODk4OjowOjo&url=%2FyuxiangBBQ-Outdoor-Kitchen-Drawers-Stainless%2Fdp%2FB07VY7YBGW%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',55,'2023-12-19 15:15:25.377876-06','2023-12-19 15:15:25.377876-06','www.amazon.com'),
+ (4335,'Aoorun',NULL,'B0C2YS8YSB','https://m.media-amazon.com/images/I/81Ztn1rYXTL._AC_UL320_.jpg',5,4.3,'$490.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfYXRmX25leHQ6MzAwMTA3MzczNzc0NTAyOjowOjo&url=%2FAoorun-Adirondack-Connecting-Resistant-Backyard-Blue%2Fdp%2FB0C2YS8YSB%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',55,'2023-12-19 15:15:25.384953-06','2023-12-19 15:15:25.384953-06','www.amazon.com'),
+ (4336,'WNATN',NULL,'B09CKPKHXN','https://m.media-amazon.com/images/I/81AvU5WU3SL._AC_UL320_.jpg',617,4.7,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WNATN-Protection-Thickened-AntiFrozen-Waterproof/dp/B09CKPKHXN/ref=sr_1_53?keywords=outdoor&qid=1703020524&sr=8-53',55,'2023-12-19 15:15:25.394895-06','2023-12-19 15:15:25.394895-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4337,'BALDR',NULL,'B0CJBC4NNX','https://m.media-amazon.com/images/I/71B7rDMDS0L._AC_UL320_.jpg',91,4.4,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BALDR-Thermometer-Wireless-Portable-Temperature/dp/B0CJBC4NNX/ref=sr_1_54?keywords=outdoor&qid=1703020524&sr=8-54',55,'2023-12-19 15:15:25.402396-06','2023-12-19 15:15:25.402396-06','www.amazon.com'),
+ (4338,'2-Pack 120 LED 72FT Solar Lights Outdoor Waterproof, Crystal Globe Lights with 8 Lighting Modes, Solar Powered Patio Lights for Garden Yard Porch Wedding Party Decor (Warm White)',NULL,'B08YDQVT1K','https://m.media-amazon.com/images/I/818G3cAC0pL._AC_UL320_.jpg',17475,4.3,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Outdoor-Crystal-Lighting-Waterproof-Powered/dp/B08YDQVT1K/ref=sr_1_55?keywords=outdoor&qid=1703020524&sr=8-55',55,'2023-12-19 15:15:25.409581-06','2023-12-19 15:15:25.409581-06','www.amazon.com'),
+ (4339,'Outdoor Odor Eliminator for Pets, Dogs, Ideal for Artificial Grass & Patio (32 oz Hose End Sprayer)',NULL,'B017A5GP1U','https://m.media-amazon.com/images/I/81uDkkFA6+L._AC_UL320_.jpg',3511,4.4,'$9.35','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Simple-Outdoor-Eliminator-Sprayer-32-Ounce/dp/B017A5GP1U/ref=sr_1_56?keywords=outdoor&qid=1703020524&sr=8-56',55,'2023-12-19 15:15:25.416015-06','2023-12-19 15:15:25.416015-06','www.amazon.com'),
+ (4341,'ornesign',NULL,'B0BZR4RBTW','https://m.media-amazon.com/images/I/81qCwUuDn1L._AC_UL320_.jpg',2371,4.6,'$35.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ornesign-Outdoor-Decorative-10-Waterproof/dp/B0BZR4RBTW/ref=sr_1_58?keywords=outdoor&qid=1703020524&sr=8-58',55,'2023-12-19 15:15:25.432747-06','2023-12-19 15:15:25.432747-06','www.amazon.com'),
+ (4342,'FMART',NULL,'B09SPB8JVB','https://m.media-amazon.com/images/I/612OPZwKxtL._AC_UL320_.jpg',744,4.1,'$62.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfbXRmOjMwMDA5OTIzMTAyMTMwMjo6MDo6&url=%2FFMART-Bluetooth-Landscape-Spotlights-Uplights%2Fdp%2FB09SPB8JVB%2Fref%3Dsr_1_59_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-59-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:25.439922-06','2023-12-19 15:15:25.439922-06','www.amazon.com'),
+ (4343,'HBN',NULL,'B0CDR5MZVH','https://m.media-amazon.com/images/I/61j555GLa0L._AC_UL320_.jpg',20,4.4,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HBN-Waterproof-Protective-Electrical-Decoration/dp/B0CDR5MZVH/ref=sr_1_60?keywords=outdoor&qid=1703020524&sr=8-60',55,'2023-12-19 15:15:25.446268-06','2023-12-19 15:15:25.446268-06','www.amazon.com'),
+ (4344,'ruhotili',NULL,'B0BRQC2QW7','https://m.media-amazon.com/images/I/81vPfUc+CeL._AC_UL320_.jpg',1611,4.3,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ruhotili-Outdoor-Waterproof-Driveway-Decoration/dp/B0BRQC2QW7/ref=sr_1_62?keywords=outdoor&qid=1703020524&sr=8-62',55,'2023-12-19 15:15:25.45334-06','2023-12-19 15:15:25.45334-06','www.amazon.com'),
+ (4345,'Keter',NULL,'B09DTJPPG8','https://m.media-amazon.com/images/I/51lPLX0IdwL._AC_UL320_.jpg',1876,4.5,'$37.24','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keter-City-Gallon-Resin-Accessories/dp/B09DTJPPG8/ref=sr_1_63?keywords=outdoor&qid=1703020524&sr=8-63',55,'2023-12-19 15:15:25.459494-06','2023-12-19 15:15:25.459494-06','www.amazon.com'),
+ (4346,'AmeriTop',NULL,'B0C8W73KQB','https://m.media-amazon.com/images/I/81fTdLCfnRL._AC_UL320_.jpg',3147,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfbXRmOjMwMDA2MjM2OTg0NzIwMjo6MDo6&url=%2FAmeriTop-Cordless-Adjustable-Illumination-Waterproof%2Fdp%2FB0C8W73KQB%2Fref%3Dsr_1_65_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-65-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:25.466119-06','2023-12-19 15:15:25.466119-06','www.amazon.com'),
+ (4347,'Brightech',NULL,'B075NS8YXG','https://m.media-amazon.com/images/I/71VOmyQRn0L._AC_UL320_.jpg',29110,4.5,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfbXRmOjIwMDEyOTAyMTEyNDA5ODo6MDo6&url=%2FBrightech-Ambience-Pro-Waterproof-Outdoor%2Fdp%2FB075NS8YXG%2Fref%3Dsr_1_66_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-66-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:25.472796-06','2023-12-19 15:15:25.472796-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4348,'Kasa Outdoor Smart Plug, Smart Home Wi-Fi Outlet with 2 Sockets, IP64 Weather Resistance, Compatible with Alexa, Google Home & IFTTT, No Hub Required, ETL Certified(EP40), Black',NULL,'B091FXH2FR','https://m.media-amazon.com/images/I/61soGaMHzrL._AC_UL320_.jpg',13536,4.6,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kasa-Smart-Resistance-Compatible-EP40/dp/B091FXH2FR/ref=sr_1_68?keywords=outdoor&qid=1703020524&sr=8-68',55,'2023-12-19 15:15:25.483499-06','2023-12-19 15:15:25.483499-06','www.amazon.com'),
+ (4349,'Outdoor Faucet Cover for Winter - Pro 7.1"W x 9.8"H - 2 Pack Outdoor Water Faucet Cover Socks for Winter Freeze Protection Pipe Insulation Reusable Waterproof Insulated Spigot backflow Cover',NULL,'B0CDG6PLBS','https://m.media-amazon.com/images/I/710EFe6VrEL._AC_UL320_.jpg',98,4.6,'$5.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Outdoor-Faucet-Cover-Winter-Protection/dp/B0CDG6PLBS/ref=sr_1_69?keywords=outdoor&qid=1703020524&sr=8-69',55,'2023-12-19 15:15:25.489328-06','2023-12-19 15:15:25.489328-06','www.amazon.com'),
+ (4350,'Solar Lights for Outside 4 Pack, New Upgraded Solar Garden Lights, Solar Lights Outdoor Waterproof for Garden Decor, Outdoor Solar Lights for Patio Yard Decor, Firefly Garden Lights Solar, Warm White',NULL,'B0BHQV57NL','https://m.media-amazon.com/images/I/81ukgwJ-PoL._AC_UL320_.jpg',1431,4.3,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Outdoor-Waterproof-Swaying-Decorative-Fireflies/dp/B0BHQV57NL/ref=sr_1_70?keywords=outdoor&qid=1703020524&sr=8-70',55,'2023-12-19 15:15:25.496289-06','2023-12-19 15:15:25.496289-06','www.amazon.com'),
+ (4351,'GOOTOP',NULL,'B09PQF39PG','https://m.media-amazon.com/images/I/81daTy3zofL._AC_UL320_.jpg',13724,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GOOTOP-Mosquito-Zapper-Outdoor-Electric/dp/B09PQF39PG/ref=sr_1_71?keywords=outdoor&qid=1703020524&sr=8-71',55,'2023-12-19 15:15:25.502231-06','2023-12-19 15:15:25.502231-06','www.amazon.com'),
+ (4352,'Glintoper',NULL,'B09PDY15ZD','https://m.media-amazon.com/images/I/91W9c3wn+XL._AC_UL320_.jpg',500,4.5,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfbXRmOjIwMDA0MTkwODY5MTc5ODo6MDo6&url=%2FGlintoper-Watering-Waterfall-Figurine-Decorative%2Fdp%2FB09PDY15ZD%2Fref%3Dsr_1_72_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-72-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:25.511936-06','2023-12-19 15:15:25.511936-06','www.amazon.com'),
+ (4353,'Anmeix',NULL,'B0CCP46B9T','https://m.media-amazon.com/images/I/61qVhOLtEKL._AC_UL320_.jpg',100,4.8,'$25.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfbXRmOjMwMDA0NzUzNTA3MzQwMjo6MDo6&url=%2FAnmeix-Christmas-Flickering-Flame%25EF%25BC%258CWaterproof-Landscape%2Fdp%2FB0CCP46B9T%2Fref%3Dsr_1_73_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-73-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:25.518911-06','2023-12-19 15:15:25.518911-06','www.amazon.com'),
+ (4354,'Eurmax',NULL,'B07XG4M12N','https://m.media-amazon.com/images/I/51mU5ebCqKL._AC_UL320_.jpg',4478,4.5,'$324.86','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MToxNTU2NTIzMzAwNTA1NzE3OjE3MDMwMjA1MjQ6c3BfbXRmOjIwMDEyNzc4MDY2NzA5ODo6MDo6&url=%2FEurmax-Commercial-Instant-Canopies-Weights%2Fdp%2FB07XG4M12N%2Fref%3Dsr_1_74_sspa%3Fkeywords%3Doutdoor%26qid%3D1703020524%26sr%3D8-74-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',55,'2023-12-19 15:15:25.525518-06','2023-12-19 15:15:25.525518-06','www.amazon.com'),
+ (4355,'Spalding',NULL,'B08QJLH54P','https://m.media-amazon.com/images/I/7187crn3osS._AC_UL320_.jpg',12535,4.6,'$22.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spalding-Street-Outdoor-Basketball-27-5/dp/B08QJLH54P/ref=sr_1_75?keywords=outdoor&qid=1703020524&sr=8-75',55,'2023-12-19 15:15:25.532228-06','2023-12-19 15:15:25.532228-06','www.amazon.com'),
+ (4356,'Keter',NULL,'B07RZM9332','https://m.media-amazon.com/images/I/51yp2BksC+L._AC_UL320_.jpg',2386,4.2,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keter-243531-Marvel-Gallon-Weather/dp/B07RZM9332/ref=sr_1_76?keywords=outdoor&qid=1703020524&sr=8-76',55,'2023-12-19 15:15:25.538498-06','2023-12-19 15:15:25.538498-06','www.amazon.com'),
+ (4357,'LESES',NULL,'B0BTCZ96MV','https://m.media-amazon.com/images/I/81EJGK4-X3L._AC_UL320_.jpg',174,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LESES-Solar-Statue-Turtle-Decorations/dp/B0BTCZ96MV/ref=sr_1_77?keywords=outdoor&qid=1703020524&sr=8-77',55,'2023-12-19 15:15:25.544338-06','2023-12-19 15:15:25.544338-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4358,'USA Toyz',NULL,'B0CG7RDFDB','https://m.media-amazon.com/images/I/81mDQa1BS5L._AC_UL320_.jpg',1241,4.5,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/USA-Toyz-Stealth-Ultimate-Waterproof/dp/B0CG7RDFDB/ref=sr_1_79?keywords=outdoor&qid=1703020524&sr=8-79',55,'2023-12-19 15:15:25.550621-06','2023-12-19 15:15:25.550621-06','www.amazon.com'),
+ (4374,'Mini Lustrous',NULL,'B07DSLTJTY','https://m.media-amazon.com/images/I/31MA73Q2Z6L._AC_UL320_.jpg',277,4.4,'$23.80','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Elliptical-Protective-Dust-proof-Waterproof-Water-Resistant/dp/B07DSLTJTY/ref=sr_1_96?keywords=outdoor&qid=1703020524&sr=8-96',55,'2023-12-19 15:15:25.644936-06','2023-12-19 15:15:25.644936-06','www.amazon.com'),
+ (4359,'Outdoor Faucet Cover for Winter - Pro 7.1"W x 10.6"H Outdoor Water Faucet Cover Socks for Winter Freeze Protection Pipe Insulation Reusable Waterproof Insulated Spigot backflow Cover,Black (2)',NULL,'B0B7RJXZX1','https://m.media-amazon.com/images/I/71mK7cr3CmL._AC_UL320_.jpg',1223,4.6,'$7.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hometopia-Outdoor-Faucet-Cover-Winter/dp/B0B7RJXZX1/ref=sr_1_80?keywords=outdoor&qid=1703020524&sr=8-80',55,'2023-12-19 15:15:25.556815-06','2023-12-19 15:15:25.556815-06','www.amazon.com'),
+ (4360,'Waterproof Electrical Box, Diivoo Outdoor Extension Cord Covers Waterproof, Large Size 6 Cable Seal Entry, IP54 Protect Power Strip, Timer Outlet Plug, Holiday Light Decoration, Black',NULL,'B0CJRQ6JBL','https://m.media-amazon.com/images/I/71dTMdpVFaL._AC_UL320_.jpg',430,4.4,'$18.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Waterproof-Electrical-Diivoo-Extension-Decoration/dp/B0CJRQ6JBL/ref=sr_1_81?keywords=outdoor&qid=1703020524&sr=8-81',55,'2023-12-19 15:15:25.56247-06','2023-12-19 15:15:25.56247-06','www.amazon.com'),
+ (4361,'4 Pack BlueX LED Par38 Flood Red Green Light Bulb - 18W (120Watt Equivalent) - Dimmable - E26 Base Red Green LED Lights, Party Decoration, Porch, Holiday Lighting, Red Flood Light',NULL,'B0C4C8XQWL','https://m.media-amazon.com/images/I/71tH8kAtT+L._AC_UL320_.jpg',3911,4.5,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BlueX-Par38-Flood-Green-Light/dp/B0C4C8XQWL/ref=sr_1_82?keywords=outdoor&qid=1703020524&sr=8-82',55,'2023-12-19 15:15:25.568482-06','2023-12-19 15:15:25.568482-06','www.amazon.com'),
+ (4362,'Zigzagger',NULL,'B07MX96LVD','https://m.media-amazon.com/images/I/71KL3RR00IL._AC_UL320_.jpg',27593,4.4,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zigzagger-Stitch-Slippers-Outdoor-Nonslip/dp/B07MX96LVD/ref=sr_1_83?keywords=outdoor&qid=1703020524&sr=8-83',55,'2023-12-19 15:15:25.574545-06','2023-12-19 15:15:25.574545-06','www.amazon.com'),
+ (4363,'Keter',NULL,'B007O1CAZQ','https://m.media-amazon.com/images/I/815wTtv7U0L._AC_UL320_.jpg',21725,4.7,'$82.84','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Keter-Pacific-Cool-Bar-Furniture/dp/B007O1CAZQ/ref=sr_1_84?keywords=outdoor&qid=1703020524&sr=8-84',55,'2023-12-19 15:15:25.580228-06','2023-12-19 15:15:25.580228-06','www.amazon.com'),
+ (4364,'Outdoor Christmas Pvc Inflatable Decorated Ball Red 24 Inch Giant Ball for Decorated Ball Ornaments Giant Christmas Blow Up Jumbo Ball Xmas Blow Outdoor Outside Holiday Yard Lawn Decor(Merry Chrismas)',NULL,'B0CND525W9','https://m.media-amazon.com/images/I/71GrJOkAaXL._AC_UL320_.jpg',22,1.5,'$34.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Pvc-Inflatable-Decorated-Ornaments/dp/B0CND525W9/ref=sr_1_85?keywords=outdoor&qid=1703020524&sr=8-85',55,'2023-12-19 15:15:25.58536-06','2023-12-19 15:15:25.58536-06','www.amazon.com'),
+ (4365,'FunforFun!',NULL,'B0C1C8579L','https://m.media-amazon.com/images/I/71-j-hzgJLL._AC_UL320_.jpg',69,4.4,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/FunforFun-Unicorn-Launcher-Outdoor-Birthday/dp/B0C1C8579L/ref=sr_1_86?keywords=outdoor&qid=1703020524&sr=8-86',55,'2023-12-19 15:15:25.590829-06','2023-12-19 15:15:25.590829-06','www.amazon.com'),
+ (4366,'OUTOGO',NULL,'B0C1RR3L1M','https://m.media-amazon.com/images/I/61cpuUAXPrL._AC_UL320_.jpg',33,4.1,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OUTOGO-Elephant-Launcher-Christmas-Birthday/dp/B0C1RR3L1M/ref=sr_1_87?keywords=outdoor&qid=1703020524&sr=8-87',55,'2023-12-19 15:15:25.596875-06','2023-12-19 15:15:25.596875-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4367,'PETDOTT',NULL,'B0B5SX7GHM','https://m.media-amazon.com/images/I/71F8AORHJIL._AC_UL320_.jpg',115,4.6,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/PETDOTT-Heating-Electric-Temperature-Pregnant/dp/B0B5SX7GHM/ref=sr_1_88?keywords=outdoor&qid=1703020524&sr=8-88',55,'2023-12-19 15:15:25.602158-06','2023-12-19 15:15:25.602158-06','www.amazon.com'),
+ (4368,'OUTDOOR EDGE',NULL,'B0BXK4ZVW3','https://m.media-amazon.com/images/I/61UdaVb8ctL._AC_UL320_.jpg',41,4.7,'$11.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OUTDOOR-EDGE-Drop-Point-Blades-Compatibility/dp/B0BXK4ZVW3/ref=sr_1_89?keywords=outdoor&qid=1703020524&sr=8-89',55,'2023-12-19 15:15:25.608501-06','2023-12-19 15:15:25.608501-06','www.amazon.com'),
+ (4369,'GasOne',NULL,'B0B5BC3CC4','https://m.media-amazon.com/images/I/61gIY2BDSkL._AC_UL320_.jpg',362,4.6,'$45.41','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GasOne-B-5200K-Outdoor-Pressure-Braided/dp/B0B5BC3CC4/ref=sr_1_90?keywords=outdoor&qid=1703020524&sr=8-90',55,'2023-12-19 15:15:25.614948-06','2023-12-19 15:15:25.614948-06','www.amazon.com'),
+ (4370,'Ring',NULL,'B0C5QSN9YB','https://m.media-amazon.com/images/I/21fAw4hLYNL._AC_UL320_.jpg',62082,4.7,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ring-Battery-security-privacy-controls/dp/B0C5QSN9YB/ref=sr_1_91?keywords=outdoor&qid=1703020524&sr=8-91',55,'2023-12-19 15:15:25.621165-06','2023-12-19 15:15:25.621165-06','www.amazon.com'),
+ (4371,'Master Lock',NULL,'B0BJ135VH1','https://m.media-amazon.com/images/I/51USWDszKFL._AC_UL320_.jpg',7105,4.5,'$31.63','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Master-Lock-Combination-Weatherproof-M175LFEC2/dp/B0BJ135VH1/ref=sr_1_92?keywords=outdoor&qid=1703020524&sr=8-92',55,'2023-12-19 15:15:25.626767-06','2023-12-19 15:15:25.626767-06','www.amazon.com'),
+ (4372,'Weather Station Wireless Indoor Outdoor Thermometer, Color Display Digital Thermometer Humidity Monitor with Atomic Clock, Forecast Station with Calendar and Adjustable Backlight for Home',NULL,'B0CN2RH2N4','https://m.media-amazon.com/images/I/71QQTaogsFL._AC_UL320_.jpg',60,5.0,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wireless-Thermometer-Humidity-Adjustable-Backlight/dp/B0CN2RH2N4/ref=sr_1_93?keywords=outdoor&qid=1703020524&sr=8-93',55,'2023-12-19 15:15:25.633539-06','2023-12-19 15:15:25.633539-06','www.amazon.com'),
+ (4373,'Bedsure',NULL,'B07PVFQXTV','https://m.media-amazon.com/images/I/71R9jIdpbqL._AC_UL320_.jpg',20285,4.5,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bedsure-Large-Elevated-Outdoor-Skid-Resistant/dp/B07PVFQXTV/ref=sr_1_95?keywords=outdoor&qid=1703020524&sr=8-95',55,'2023-12-19 15:15:25.639507-06','2023-12-19 15:15:25.639507-06','www.amazon.com'),
+ (4375,'JACKYLED',NULL,'B0CJC5G5KS','https://m.media-amazon.com/images/I/81e1x-N6IwL._AC_UL320_.jpg',23,4.3,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JACKYLED-Spotlights-Adjustable-Waterproof-Extendable/dp/B0CJC5G5KS/ref=sr_1_97?keywords=outdoor&qid=1703020524&sr=8-97',55,'2023-12-19 15:15:25.651327-06','2023-12-19 15:15:25.651327-06','www.amazon.com'),
+ (4376,'BN-LINK',NULL,'B09K4K25KF','https://m.media-amazon.com/images/I/61xxUi9VGxL._AC_UL320_.jpg',1105,4.5,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BN-LINK-Mechanical-Protective-Waterproof-Dustproof/dp/B09K4K25KF/ref=sr_1_98?keywords=outdoor&qid=1703020524&sr=8-98',55,'2023-12-19 15:15:25.656936-06','2023-12-19 15:15:25.656936-06','www.amazon.com'),
+ (4377,'DAYBETTER',NULL,'B07JN28KP3','https://m.media-amazon.com/images/I/81nn1+0h6FL._AC_UL320_.jpg',41827,4.4,'$17.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/DAYBETTER-Waterproof-Flexible-Changing-Controller/dp/B07JN28KP3/ref=sr_1_99?keywords=outdoor&qid=1703020524&sr=8-99',55,'2023-12-19 15:15:25.662484-06','2023-12-19 15:15:25.662484-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4378,'HBN',NULL,'B0CJ4GWBZV','https://m.media-amazon.com/images/I/71D3AO4O0HL._AC_UL320_.jpg',44,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HBN-Waterproof-Weatherproof-Photocell-Lights%EF%BC%8C1875W/dp/B0CJ4GWBZV/ref=sr_1_100?keywords=outdoor&qid=1703020524&sr=8-100',55,'2023-12-19 15:15:25.66795-06','2023-12-19 15:15:25.66795-06','www.amazon.com'),
+ (4379,'daphino',NULL,'B0CFQDMMHG','https://m.media-amazon.com/images/I/71MlD05oyRL._AC_UL320_.jpg',2128,4.8,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/daphino-Adjustable-355%C2%B0Wide-Waterproof-Security/dp/B0CFQDMMHG/ref=sr_1_101?keywords=outdoor&qid=1703020524&sr=8-101',55,'2023-12-19 15:15:25.677655-06','2023-12-19 15:15:25.677655-06','www.amazon.com'),
+ (4326,'The Great Outdoors [Blu-ray]',NULL,'6301179552','https://m.media-amazon.com/images/I/81dtUNoGrJL._AC_UL320_.jpg',14029,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Great-Outdoors-VHS-Dan-Aykroyd/dp/6301179552/ref=sr_1_56?keywords=outdoor&qid=1703020517&sr=8-56',55,'2023-12-19 15:15:18.847533-06','2023-12-19 15:15:25.683484-06','www.amazon.com'),
+ (4380,'Lighted Christmas Window Lights Decorations, 5pcs Battery Powered Christmas Window Hanging Dwarf Reindeer Angel Star Green Monster Shaped with Suction Cup for Xmas Tree Window Indoor Outdoor Decor',NULL,'B0CCJDMNR7','https://m.media-amazon.com/images/I/81xl8rp47yL._AC_UL320_.jpg',910,4.4,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Lighted-Christmas-Decorations-Battery-Reindeer/dp/B0CCJDMNR7/ref=sr_1_103?keywords=outdoor&qid=1703020524&sr=8-103',55,'2023-12-19 15:15:25.689363-06','2023-12-19 15:15:25.689363-06','www.amazon.com'),
+ (4381,'Raymate',NULL,'B0CPJ1VHXY','https://m.media-amazon.com/images/I/71G0o6lUMIL._AC_UL320_.jpg',303,4.7,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Raymate-Bluetooth-Speakers-Waterproof-Bluetooth-V5-0/dp/B0CPJ1VHXY/ref=sr_1_105?keywords=outdoor&qid=1703020524&sr=8-105',55,'2023-12-19 15:15:25.694956-06','2023-12-19 15:15:25.694956-06','www.amazon.com'),
+ (4382,'WYZE',NULL,'B0BWT19S5C','https://m.media-amazon.com/images/I/61Rq1zAqncL._AC_UL320_.jpg',436,4.4,'$39.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/WYZE-Spotlight-Detection-Compatible-Assistant/dp/B0BWT19S5C/ref=sr_1_106?keywords=outdoor&qid=1703020524&sr=8-106',55,'2023-12-19 15:15:25.700449-06','2023-12-19 15:15:25.700449-06','www.amazon.com'),
+ (4383,'Ninja',NULL,'B0C6BQVDX3','https://m.media-amazon.com/images/I/815UmCN6zUL._AC_UL320_.jpg',157,4.5,'$284.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ninja-Woodfire-Technology-terracotta-OO101/dp/B0C6BQVDX3/ref=sr_1_107?keywords=outdoor&qid=1703020524&sr=8-107',55,'2023-12-19 15:15:25.70659-06','2023-12-19 15:15:25.70659-06','www.amazon.com'),
+ (4384,'echosari',NULL,'B0CKM8ZNNB','https://m.media-amazon.com/images/I/81ADmyHHBSL._AC_UL320_.jpg',2440,4.3,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/echosari-Christmas-Changing-Multicolor-Connectable/dp/B0CKM8ZNNB/ref=sr_1_108?keywords=outdoor&qid=1703020524&sr=8-108',55,'2023-12-19 15:15:25.712906-06','2023-12-19 15:15:25.712906-06','www.amazon.com'),
+ (4385,'Consciot Solar Spot Lights Outdoor, 54 LEDs Solar Lights Christmas Decorations, 7 Multicolor Changing, Solar Lights Outdoor Waterproof IP67, Solar Spotlight for Yard Garden Landscape, 2 Pack',NULL,'B0BVZGBT4X','https://aax-us-iad.amazon.com/e/loi/imp?b=JHUvUavOp5dGFJFP51BixAsAAAGMg-7zigEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICDFsgEc',349,4.3,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RHUvUavOp5dGFJFP51BixAsAAAGMg-7zLQEAAAH2AQBvbm9fdHhuX2JpZDMgICBvbm9fdHhuX2ltcDEgICDFsgEc/https://www.amazon.com/Consciot-Multicolor-Waterproof-Spotlight-Landscape/dp/B0BVZGBT4X/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=outdoor&keywords=outdoor&pd_rd_i=B0BVZGBT4X&pd_rd_r=2b449d50-76b1-42b7-93cc-5ab2be5db958&pd_rd_w=gtTM8&pd_rd_wg=gWVHM&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=TD4T3X7DEG6TQ56A9MNT&qid=1703020524&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-49-48f7baba-8e26-45f3-8811-e1a601ad20bf',55,'2023-12-19 15:15:25.718879-06','2023-12-19 15:15:25.718879-06','www.amazon.comhttps:'),
+ (4593,'Flat Plug Extension Cord, 5ft Power Strip with 4 USB Ports(2 USB C), 4 Widely Outlets Extender, Wall Mount, Desk Charging Station for Office, School, Travel and Dorm Room Essentials, White, ETL Listed',NULL,'B0C5HT9LMP','https://m.media-amazon.com/images/I/518tiMuntLL._AC_UL320_.jpg',284,4.7,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Extension-Outlets-Extender-Charging-Essentials/dp/B0C5HT9LMP/ref=sr_1_105?keywords=travel+accessories&qid=1703020686&sr=8-105',57,'2023-12-19 15:18:08.143239-06','2023-12-19 15:18:08.143239-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4387,'Spy x Family, Vol. 1 (1)',NULL,'6258237207','https://m.media-amazon.com/images/I/71vMGRog+iL._AC_UL320_.jpg',9685,4.9,'$7.28','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spy-x-Family-Tatsuya-Endo/dp/6258237207/ref=sr_1_2?keywords=manga&qid=1703020665&sr=8-2',56,'2023-12-19 15:17:45.963614-06','2023-12-19 15:17:45.963614-06','www.amazon.com'),
+ (4388,'Chainsaw Man Box Set: Includes volumes 1-11',NULL,'1974741427','https://m.media-amazon.com/images/I/81u8igOscKL._AC_UL320_.jpg',284,4.6,'$59.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Chainsaw-Man-Box-Set-volumes/dp/1974741427/ref=sr_1_3?keywords=manga&qid=1703020665&sr=8-3',56,'2023-12-19 15:17:45.969849-06','2023-12-19 15:17:45.969849-06','www.amazon.com'),
+ (4389,'Attack on Titan Season 1 Part 1 Manga Box Set (Attack on Titan Manga Box Sets)',NULL,'1632366991','https://m.media-amazon.com/images/I/91VlIW1pn8L._AC_UL320_.jpg',5121,4.8,'$30.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Attack-Titan-Season-Part-Manga/dp/1632366991/ref=sr_1_4?keywords=manga&qid=1703020665&sr=8-4',56,'2023-12-19 15:17:45.975756-06','2023-12-19 15:17:45.975756-06','www.amazon.com'),
+ (4594,'Wireless Charger 3 in 1,RTOPS Magnetic Travel Wireless Charging Station Multiple Devices,GaN 3 in 1 Charging Station,Compatible for iPhone15/14/13/12/Pro/Max,iWatch,AirPods 3/2/Pro(Adapter Includes)',NULL,'B09MS72VJ2','https://m.media-amazon.com/images/I/51NtxFOhS0L._AC_UL320_.jpg',3303,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wireless-Magnetic-Foldable-Charging-Compatible/dp/B09MS72VJ2/ref=sr_1_106?keywords=travel+accessories&qid=1703020686&sr=8-106',57,'2023-12-19 15:18:08.148906-06','2023-12-19 15:18:08.148906-06','www.amazon.com'),
+ (4390,'My Hero Academia, Vol. 1 (1)',NULL,'B012EM80FS','https://m.media-amazon.com/images/I/81AjnD8nvHL._AC_UL320_.jpg',15664,4.8,'$5.68','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/My-Hero-Academia-Vol-Midoriya-ebook/dp/B012EM80FS/ref=sr_1_5?keywords=manga&qid=1703020665&sr=8-5',56,'2023-12-19 15:17:45.988764-06','2023-12-19 15:17:45.988764-06','www.amazon.com'),
+ (4391,'A Silent Voice Complete Series Box Set',NULL,'1632366436','https://m.media-amazon.com/images/I/81ieKoIzq7L._AC_UL320_.jpg',4379,4.9,'$59.84','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Silent-Voice-Complete-Box-Set/dp/1632366436/ref=sr_1_6?keywords=manga&qid=1703020665&sr=8-6',56,'2023-12-19 15:17:45.994219-06','2023-12-19 15:17:45.994219-06','www.amazon.com'),
+ (4392,'Solo Leveling, Vol. 1 (comic) (Solo Leveling (manga), 1)',NULL,'B08FVLVXX6','https://m.media-amazon.com/images/I/71BFjpc84NL._AC_UL320_.jpg',5298,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Solo-Leveling-Vol-1-Chugong-ebook/dp/B08FVLVXX6/ref=sr_1_7?keywords=manga&qid=1703020665&sr=8-7',56,'2023-12-19 15:17:46.000231-06','2023-12-19 15:17:46.000231-06','www.amazon.com'),
+ (4393,'Berserk Deluxe Volume 1',NULL,'1506711987','https://m.media-amazon.com/images/I/91eRoWSACCL._AC_UL320_.jpg',15118,4.9,'$28.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Berserk-Deluxe-1-Kentaro-Miura/dp/1506711987/ref=sr_1_8?keywords=manga&qid=1703020665&sr=8-8',56,'2023-12-19 15:17:46.006758-06','2023-12-19 15:17:46.006758-06','www.amazon.com'),
+ (4394,'Disney Twisted-Wonderland, Vol. 1: The Manga: Book of Heartslabyul (1)',NULL,'B0C7DMP6JG','https://m.media-amazon.com/images/I/71GWNNslN2L._AC_UL320_.jpg',248,4.8,'$10.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Disney-Twisted-Wonderland-Vol-Manga-Heartslabyul-ebook/dp/B0C7DMP6JG/ref=sr_1_9?keywords=manga&qid=1703020665&sr=8-9',56,'2023-12-19 15:17:46.01332-06','2023-12-19 15:17:46.01332-06','www.amazon.com'),
+ (4395,'Chainsaw Man, Vol. 13 (13)',NULL,'B0BV1B2PW4','https://m.media-amazon.com/images/I/81WO4SsaNzL._AC_UL320_.jpg',78,4.5,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Chainsaw-Man-Vol-Tatsuki-Fujimoto-ebook/dp/B0BV1B2PW4/ref=sr_1_10?keywords=manga&qid=1703020665&sr=8-10',56,'2023-12-19 15:17:46.019554-06','2023-12-19 15:17:46.019554-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4396,'Death Note (All-in-One Edition)',NULL,'1421597713','https://m.media-amazon.com/images/I/71sBVJBC3+L._AC_UL320_.jpg',6253,4.8,'$33.32','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Death-Note-All-One-Tsugumi/dp/1421597713/ref=sr_1_11?keywords=manga&qid=1703020665&sr=8-11',56,'2023-12-19 15:17:46.025257-06','2023-12-19 15:17:46.025257-06','www.amazon.com'),
+ (4397,'Goodbye, Eri',NULL,'8467960728','https://m.media-amazon.com/images/I/71fgXFnzayL._AC_UL320_.jpg',746,4.8,'$11.87','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GOODBYE-ERI-ED-KANZENBAN-CAT/dp/8467960728/ref=sr_1_12?keywords=manga&qid=1703020665&sr=8-12',56,'2023-12-19 15:17:46.03181-06','2023-12-19 15:17:46.03181-06','www.amazon.com'),
+ (4398,'Attack on Titan 1',NULL,'0606371095','https://m.media-amazon.com/images/I/71S8O-3xLVL._AC_UL320_.jpg',8893,4.8,'$7.67','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Attack-Turtleback-School-Library-Binding/dp/0606371095/ref=sr_1_13?keywords=manga&qid=1703020665&sr=8-13',56,'2023-12-19 15:17:46.037924-06','2023-12-19 15:17:46.037924-06','www.amazon.com'),
+ (4399,'[Oshi No Ko], Vol. 1 (Volume 1) ([Oshi No Ko], 1)',NULL,'B0B9PSDCF7','https://m.media-amazon.com/images/I/81gs7bNAyvL._AC_UL320_.jpg',695,4.8,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Oshi-No-Ko-Vol-ebook/dp/B0B9PSDCF7/ref=sr_1_14?keywords=manga&qid=1703020665&sr=8-14',56,'2023-12-19 15:17:46.043935-06','2023-12-19 15:17:46.043935-06','www.amazon.com'),
+ (4400,'Black Clover, Vol. 1 (1)',NULL,'B01DVAQSCO','https://m.media-amazon.com/images/I/81zc+lxiNwL._AC_UL320_.jpg',2663,4.8,'$8.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Black-Clover-Vol-Boys-Vow-ebook/dp/B01DVAQSCO/ref=sr_1_15?keywords=manga&qid=1703020665&sr=8-15',56,'2023-12-19 15:17:46.050612-06','2023-12-19 15:17:46.050612-06','www.amazon.com'),
+ (4401,'Undead Unluck, Vol. 1 (1)',NULL,'B0936GBZGX','https://m.media-amazon.com/images/I/81mQnuTHJdL._AC_UL320_.jpg',829,4.8,'$8.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Undead-Unluck-Vol-Yoshifumi-Tozuka-ebook/dp/B0936GBZGX/ref=sr_1_16?keywords=manga&qid=1703020665&sr=8-16',56,'2023-12-19 15:17:46.056503-06','2023-12-19 15:17:46.056503-06','www.amazon.com'),
+ (4402,'Demon Slayer: Kimetsu Academy, Vol. 1 (1)',NULL,'1974740358','https://m.media-amazon.com/images/I/81rzQHAySML._AC_UL320_.jpg',4,5.0,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjMwMDA5ODE2ODE3MDgwMjo6MDo6&url=%2FDemon-Slayer-Kimetsu-Academy-Vol%2Fdp%2F1974740358%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.062433-06','2023-12-19 15:17:46.062433-06','www.amazon.com'),
+ (4403,'A Cheat and a Liar',NULL,'B0BX5V47GF','https://m.media-amazon.com/images/I/71PyQNduggL._AC_UL320_.jpg',1,5.0,'$4.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjMwMDEwMTQ4NDQxMDcwMjo6MDo6&url=%2FCheat-Liar-Bruce-Spurdle-ebook%2Fdp%2FB0BX5V47GF%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.068423-06','2023-12-19 15:17:46.068423-06','www.amazon.com'),
+ (4404,'Mantle Of A God (Chosen by Freya Book 1)',NULL,'B0CFFYM91Z','https://m.media-amazon.com/images/I/91xms-AX5LL._AC_UL320_.jpg',592,4.5,'$0.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjMwMDA0MjA5NDAyOTQwMjo6MDo6&url=%2FMantle-God-Chosen-Freya-Book-ebook%2Fdp%2FB0CFFYM91Z%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.074276-06','2023-12-19 15:17:46.074276-06','www.amazon.com'),
+ (4405,'Jujutsu Kaisen, Vol. 21 (21)',NULL,'B0BTZRYKYM','https://m.media-amazon.com/images/I/81Q-ir0-LTL._AC_UL320_.jpg',84,4.7,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gege-Akutami-ebook/dp/B0BTZRYKYM/ref=sr_1_20?keywords=manga&qid=1703020665&sr=8-20',56,'2023-12-19 15:17:46.080282-06','2023-12-19 15:17:46.080282-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4406,'Wotakoi: Love Is Hard for Otaku Complete Manga Box Set (Wotakoi Box Set)',NULL,'1646516362','https://m.media-amazon.com/images/I/618O8CTSsnL._AC_UL320_.jpg',182,4.8,'$50.02','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Wotakoi-Love-Otaku-Complete-Manga/dp/1646516362/ref=sr_1_21?keywords=manga&qid=1703020665&sr=8-21',56,'2023-12-19 15:17:46.08733-06','2023-12-19 15:17:46.08733-06','www.amazon.com'),
+ (4407,'All You Need Is Kill (manga)',NULL,'1421576015','https://m.media-amazon.com/images/I/81nTX5++hSL._AC_UL320_.jpg',1327,4.8,'$13.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/All-You-Need-Kill-manga/dp/1421576015/ref=sr_1_22?keywords=manga&qid=1703020665&sr=8-22',56,'2023-12-19 15:17:46.093171-06','2023-12-19 15:17:46.093171-06','www.amazon.com'),
+ (4408,'Demon Slayer Complete Box Set: Includes volumes 1-23 with premium',NULL,'1974725952','https://m.media-amazon.com/images/I/81+cFDUS1QL._AC_UL320_.jpg',4306,4.9,'$145.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Demon-Slayer-Complete-Box-Set/dp/1974725952/ref=sr_1_23?keywords=manga&qid=1703020665&sr=8-23',56,'2023-12-19 15:17:46.09951-06','2023-12-19 15:17:46.09951-06','www.amazon.com'),
+ (4409,'TAOYATAO Cthulhu Mythology The Great Book of The Necronomicon Playing Card Board Game Poker Card',NULL,'B0B6HQJH5S','https://m.media-amazon.com/images/I/71xwVeWq3gL._AC_UL320_.jpg',9,3.8,'$13.68','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjIwMDA4NDM5MjM3NDk5ODo6MDo6&url=%2FCthulhu-Mythology-Necronomicon-Playing-Exquisite%2Fdp%2FB0B6HQJH5S%2Fref%3Dsr_1_24_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-24-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.105333-06','2023-12-19 15:17:46.105333-06','www.amazon.com'),
+ (4410,'Elegtiskas Detachable Dickey Blouse False Collar Half Shirt Blouse Collar Crop Top',NULL,'B08ZYN7386','https://m.media-amazon.com/images/I/51O6+lO9E7L._AC_UL320_.jpg',915,4.4,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjIwMDA4MTk1MzIxOTU2MTo6MDo6&url=%2FElegtiskas-Detachable-Dickey-Blouse-Collar%2Fdp%2FB08ZYN7386%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.11135-06','2023-12-19 15:17:46.11135-06','www.amazon.com'),
+ (4411,'Chainsaw Man, Vol. 1 (1)',NULL,'B09C2XBH8V','https://m.media-amazon.com/images/I/81s8xJUzWGL._AC_UL320_.jpg',9822,4.8,'$6.34','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/CHAINSAW-MAN-Tatsuki-Fujimoto-English/dp/B09C2XBH8V/ref=sr_1_28?keywords=manga&qid=1703020665&sr=8-28',56,'2023-12-19 15:17:46.119258-06','2023-12-19 15:17:46.119258-06','www.amazon.com'),
+ (4412,'The Ghost in the Shell: Fully Compiled (Complete Hardcover Collection) (The Ghost in the Shell Deluxe)',NULL,'1646516311','https://m.media-amazon.com/images/I/81JNWXA7YuL._AC_UL320_.jpg',211,4.6,'$49.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ghost-Shell-Compiled-Hardcover-Collection/dp/1646516311/ref=sr_1_29?keywords=manga&qid=1703020665&sr=8-29',56,'2023-12-19 15:17:46.126349-06','2023-12-19 15:17:46.126349-06','www.amazon.com'),
+ (4413,'Demon Slayer: Kimetsu no Yaiba, Vol. 1 (1)',NULL,'B07CTBBGZF','https://m.media-amazon.com/images/I/81ZNkhqRvVL._AC_UL320_.jpg',14728,4.8,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Demon-Slayer-Kimetsu-Yaiba-Cruelty-ebook/dp/B07CTBBGZF/ref=sr_1_30?keywords=manga&qid=1703020665&sr=8-30',56,'2023-12-19 15:17:46.132973-06','2023-12-19 15:17:46.132973-06','www.amazon.com'),
+ (4414,'My Hero Academia Box Set 1: Includes volumes 1-20 with premium (1) (My Hero Academia Box Sets)',NULL,'1974735990','https://m.media-amazon.com/images/I/81fCzl5vTtL._AC_UL320_.jpg',920,4.8,'$98.57','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/My-Hero-Academia-Box-Set/dp/1974735990/ref=sr_1_31?keywords=manga&qid=1703020665&sr=8-31',56,'2023-12-19 15:17:46.13905-06','2023-12-19 15:17:46.13905-06','www.amazon.com'),
+ (4415,'Chainsaw Man Manga Collection 11 Book Set volumes 1-11 by Tatsuki Fujimoto & Juliet Music Magnetic Bookmarks',NULL,'B0C34C7XPK','https://m.media-amazon.com/images/I/A13eGS1TgSL._AC_UL320_.jpg',5,4.8,'$89.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjMwMDAwMzk5MzMzNTAwMjo6MDo6&url=%2FCollection-Tatsuki-Fujimoto-Juliet-Music%2Fdp%2FB0C34C7XPK%2Fref%3Dsr_1_32_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-32-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.145117-06','2023-12-19 15:17:46.145117-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4416,'Enno Vatti 100 Anime Scratch Off Poster - Top Animes Of All Time (16.5" x 23.4")- Ultimate Bucket List/Cool Anime Stuff- Best Gifts for Anime Lovers, Christmas, Easter, Valentine''s Day',NULL,'B092D3P7LM','https://m.media-amazon.com/images/I/81wvyvlrbQS._AC_UL320_.jpg',2301,4.8,'$19.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjIwMDA3MTAzOTI1MjM5ODo6MDo6&url=%2F100-Anime-Scratch-Off-Poster%2Fdp%2FB092D3P7LM%2Fref%3Dsr_1_34_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-34-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.15126-06','2023-12-19 15:17:46.15126-06','www.amazon.com'),
+ (4417,'Zom 100: Bucket List of the Dead, Vol. 12 (12)',NULL,'1974741346','https://m.media-amazon.com/images/I/81Vxv5g-j7L._AC_UL320_.jpg',15,4.8,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfbXRmOjMwMDA4MDk0OTIwMTYwMjo6MDo6&url=%2FZom-100-Bucket-List-Dead%2Fdp%2F1974741346%2Fref%3Dsr_1_35_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-35-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:46.15745-06','2023-12-19 15:17:46.15745-06','www.amazon.com'),
+ (4418,'ORIGIN 1',NULL,'B0CL9MW3FZ','https://m.media-amazon.com/images/I/91jH9R2OHcL._AC_UL320_.jpg',7,4.7,'$12.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ORIGIN-Vol-1-BOICHI-ebook/dp/B0CL9MW3FZ/ref=sr_1_36?keywords=manga&qid=1703020665&sr=8-36',56,'2023-12-19 15:17:46.163663-06','2023-12-19 15:17:46.163663-06','www.amazon.com'),
+ (4419,'BLAME! 1',NULL,'B01INYEW1W','https://m.media-amazon.com/images/I/91DSoniXjcL._AC_UL320_.jpg',1626,4.7,'$17.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BLAME-Vol-1-Tsutomu-Nihei-ebook/dp/B01INYEW1W/ref=sr_1_37?keywords=manga&qid=1703020665&sr=8-37',56,'2023-12-19 15:17:46.169286-06','2023-12-19 15:17:46.169286-06','www.amazon.com'),
+ (4420,'The Summer Hikaru Died, Vol. 1 (Volume 1) (The Summer Hikaru Died, 1)',NULL,'B0BTFCFRWT','https://m.media-amazon.com/images/I/71aptV4ScXL._AC_UL320_.jpg',304,4.8,'$10.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Summer-Hikaru-Died-Vol-ebook/dp/B0BTFCFRWT/ref=sr_1_38?keywords=manga&qid=1703020665&sr=8-38',56,'2023-12-19 15:17:46.175754-06','2023-12-19 15:17:46.175754-06','www.amazon.com'),
+ (4421,'Toilet-bound Hanako-kun: First Stall (Volume 1) (Toilet-bound Hanako-kun Boxed InSTALLments, 1)',NULL,'1975366492','https://m.media-amazon.com/images/I/71tJrlvN2tL._AC_UL320_.jpg',113,4.6,'$62.52','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Toilet-bound-Hanako-kun-First-Stall-InSTALLments/dp/1975366492/ref=sr_1_40?keywords=manga&qid=1703020665&sr=8-40',56,'2023-12-19 15:17:46.185223-06','2023-12-19 15:17:46.185223-06','www.amazon.com'),
+ (4422,'Bocchi the Rock!, Vol. 1 (Volume 1) (Bocchi the Rock!, 1)',NULL,'B0C4FZMF17','https://m.media-amazon.com/images/I/81DubR7340L._AC_UL320_.jpg',71,4.8,'$13.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bocchi-Rock-Vol-Aki-Hamazi-ebook/dp/B0C4FZMF17/ref=sr_1_42?keywords=manga&qid=1703020665&sr=8-42',56,'2023-12-19 15:17:46.195768-06','2023-12-19 15:17:46.195768-06','www.amazon.com'),
+ (4423,'Pokémon Adventures (7 Volume Set - Reads R to L (Japanese Style) for all ages)',NULL,'1421550067','https://m.media-amazon.com/images/I/810UyPoPuML._AC_UL320_.jpg',2481,4.8,'$41.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pok%C3%A9mon-Adventures-Set-Reads-Japanese/dp/1421550067/ref=sr_1_43?keywords=manga&qid=1703020665&sr=8-43',56,'2023-12-19 15:17:46.203119-06','2023-12-19 15:17:46.203119-06','www.amazon.com'),
+ (4424,'One Piece, Vol. 104 (104)',NULL,'B0BV1HY8B6','https://m.media-amazon.com/images/I/91CN0HstfNL._AC_UL320_.jpg',108,4.8,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/One-Piece-Vol-Eiichiro-Sanji-ebook/dp/B0BV1HY8B6/ref=sr_1_44?keywords=manga&qid=1703020665&sr=8-44',56,'2023-12-19 15:17:46.234645-06','2023-12-19 15:17:46.234645-06','www.amazon.com'),
+ (4425,'Haikyu!!, Vol. 1 (1)',NULL,'B01F4IYNX2','https://m.media-amazon.com/images/I/8125DI58M+L._AC_UL320_.jpg',6675,4.9,'$5.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Haikyu-Vol-1-Hinata-Kageyama-ebook/dp/B01F4IYNX2/ref=sr_1_46?keywords=manga&qid=1703020665&sr=8-46',56,'2023-12-19 15:17:46.24342-06','2023-12-19 15:17:46.24342-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4426,'One-Punch Man, Vol. 1 (1)',NULL,'B00I9IO7FE','https://m.media-amazon.com/images/I/81VAgJoB3BL._AC_UL320_.jpg',6473,4.8,'$9.36','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/One-Punch-Man-Vol-1-ONE-ebook/dp/B00I9IO7FE/ref=sr_1_47?keywords=manga&qid=1703020665&sr=8-47',56,'2023-12-19 15:17:46.250886-06','2023-12-19 15:17:46.250886-06','www.amazon.com'),
+ (4427,'Kaiju No. 8, Vol. 1 (1)',NULL,'B098DN5KVB','https://m.media-amazon.com/images/I/81IgJ1cGaWS._AC_UL320_.jpg',3110,4.9,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Kaiju-No-8-Vol-1-ebook/dp/B098DN5KVB/ref=sr_1_48?keywords=manga&qid=1703020665&sr=8-48',56,'2023-12-19 15:17:46.257602-06','2023-12-19 15:17:46.257602-06','www.amazon.com'),
+ (4428,'One Piece: East Blue 1-2-3',NULL,'1421536250','https://m.media-amazon.com/images/I/810mUdp86HL._AC_UL320_.jpg',3283,4.8,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/One-Piece-East-Blue-1-2-3/dp/1421536250/ref=sr_1_49?keywords=manga&qid=1703020665&sr=8-49',56,'2023-12-19 15:17:46.264656-06','2023-12-19 15:17:46.264656-06','www.amazon.com'),
+ (4429,'Attack on Titan The Final Season Part 2 Manga Box Set (Attack on Titan Manga Box Sets)',NULL,'164651453X','https://m.media-amazon.com/images/I/81b-63KSjqL._AC_UL320_.jpg',305,4.9,'$30.57','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Attack-Titan-Final-Season-Manga/dp/164651453X/ref=sr_1_50?keywords=manga&qid=1703020665&sr=8-50',56,'2023-12-19 15:17:46.271085-06','2023-12-19 15:17:46.271085-06','www.amazon.com'),
+ (4430,'Sakamoto Days, Vol. 1 (1)',NULL,'B0992SXGBL','https://m.media-amazon.com/images/I/81keqrZAVYL._AC_UL320_.jpg',1060,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sakamoto-Days-Vol-Yuto-Suzuki-ebook/dp/B0992SXGBL/ref=sr_1_51?keywords=manga&qid=1703020665&sr=8-51',56,'2023-12-19 15:17:46.27738-06','2023-12-19 15:17:46.27738-06','www.amazon.com'),
+ (4595,'Luggage Cup Holder for Suitcases Free Hands,Travel Must Haves, Adjustable for Different Sizes of Coffee Cups, Universal Luggage Accessories for Flight Attendants, Business Travelers, Tourists(Gray)',NULL,'B0BVMHT7MM','https://m.media-amazon.com/images/I/81AX3FqcvoL._AC_UL320_.jpg',207,4.5,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Suitcases-Adjustable-Different-Accessories-Attendants/dp/B0BVMHT7MM/ref=sr_1_107?keywords=travel+accessories&qid=1703020686&sr=8-107',57,'2023-12-19 15:18:08.155061-06','2023-12-19 15:18:08.155061-06','www.amazon.com'),
+ (4431,'Disney Twisted-Wonderland, Vol. 2: The Manga: Book of Heartslabyul (2)',NULL,'B0CKDRPSPV','https://m.media-amazon.com/images/I/819HdisoLBL._AC_UL320_.jpg',37,4.8,'$11.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Disney-Twisted-Wonderland-Vol-Manga-Heartslabyul-ebook/dp/B0CKDRPSPV/ref=sr_1_53?keywords=manga&qid=1703020665&sr=8-53',56,'2023-12-19 15:17:46.290573-06','2023-12-19 15:17:46.290573-06','www.amazon.com'),
+ (4432,'Jujutsu Kaisen, Vol. 19 (19)',NULL,'B0BQPNQLXM','https://m.media-amazon.com/images/I/811kK9R8bXL._AC_UL320_.jpg',781,4.9,'$8.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gege-Akutami-ebook/dp/B0BQPNQLXM/ref=sr_1_54?keywords=manga&qid=1703020665&sr=8-54',56,'2023-12-19 15:17:46.297787-06','2023-12-19 15:17:46.297787-06','www.amazon.com'),
+ (4433,'Sakamoto Days, Vol. 10 (10)',NULL,'B0BTZTTGR9','https://m.media-amazon.com/images/I/71ZJCDq881L._AC_UL320_.jpg',5,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sakamoto-Days-Vol-Yuto-Suzuki-ebook/dp/B0BTZTTGR9/ref=sr_1_55?keywords=manga&qid=1703020665&sr=8-55',56,'2023-12-19 15:17:46.306316-06','2023-12-19 15:17:46.306316-06','www.amazon.com'),
+ (4434,'Demon Slayer: Kimetsu no Yaiba, Vol. 6 (6)',NULL,'B07RB7CR6R','https://m.media-amazon.com/images/I/81t1iALAZSL._AC_UL320_.jpg',5393,4.9,'$5.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Demon-Slayer-Kimetsu-Yaiba-Gathers-ebook/dp/B07RB7CR6R/ref=sr_1_56?keywords=manga&qid=1703020665&sr=8-56',56,'2023-12-19 15:17:46.313097-06','2023-12-19 15:17:46.313097-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4435,'Demon Slayer: Kimetsu Academy, Vol. 1 (1)',NULL,'B0CLKZYRFN','https://m.media-amazon.com/images/I/81rzQHAySML._AC_UL320_.jpg',4,5.0,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Demon-Slayer-Kimetsu-Academy-Vol-ebook/dp/B0CLKZYRFN/ref=sr_1_57?keywords=manga&qid=1703020665&sr=8-57',56,'2023-12-19 15:17:46.319734-06','2023-12-19 15:17:46.319734-06','www.amazon.com'),
+ (4436,'Jujutsu Kaisen, Vol. 20 (20)',NULL,'B0BJ66KC3N','https://m.media-amazon.com/images/I/81+-9sRp2JL._AC_UL320_.jpg',447,4.9,'$8.75','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gege-Akutami-ebook/dp/B0BJ66KC3N/ref=sr_1_58?keywords=manga&qid=1703020665&sr=8-58',56,'2023-12-19 15:17:46.326085-06','2023-12-19 15:17:46.326085-06','www.amazon.com'),
+ (4437,'Musashi: An Epic Novel of the Samurai Era',NULL,'1538589877','https://m.media-amazon.com/images/I/81H7+mxJk9L._AC_UL320_.jpg',3968,4.8,'$17.89','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Musashi-Eiji-Yoshikawa/dp/1538589877/ref=sr_1_59?keywords=manga&qid=1703020665&sr=8-59',56,'2023-12-19 15:17:46.333805-06','2023-12-19 15:17:46.333805-06','www.amazon.com'),
+ (4438,'Mr. Villain''s Day Off 01',NULL,'B0CKVJ1MFN','https://m.media-amazon.com/images/I/81QBXbWbamL._AC_UL320_.jpg',88,4.6,'$12.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Mr-Villains-CHAPTER-SERIALS-Book-ebook/dp/B0CKVJ1MFN/ref=sr_1_60?keywords=manga&qid=1703020665&sr=8-60',56,'2023-12-19 15:17:46.340685-06','2023-12-19 15:17:46.340685-06','www.amazon.com'),
+ (4386,'How to Draw Anime for Kids How to Draw Anime and Manga for Beginners: Learn to Draw Awesome Anime and Manga Characters A Step-by-Step Drawing Guide for Kids 9 - 12 (How to Draw Everything)',NULL,'B0CJKY712P','https://aax-us-iad.amazon.com/e/loi/imp?b=JBT4te2JtcxmKdX7YpFd1R0AAAGMg_EZMgEAAAH2AQBvbm9fdHhuX2JpZDEgICBvbm9fdHhuX2ltcDEgICBPqeRi',130,4.5,'$16.19','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo4MjcyMTQ1NjQ5NjQwNzE3OjE3MDMwMjA2NjU6c3BfYXRmOjMwMDA2ODcyMzQ1NjkwMjo6MDo6&url=%2FAnime-Manga-Beginners-Step-Step%2Fdp%2FB0CJKY712P%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dmanga%26qid%3D1703020665%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',56,'2023-12-19 15:17:45.956815-06','2023-12-19 15:17:46.34734-06','www.amazon.com'),
+ (4439,'How to Draw Anime and Manga for Beginners: Learn to Draw Awesome Anime and Manga Characters - A Step-by-Step Drawing Guide for Kids, Teens, and Adults',NULL,'B09ZCTWDH8','https://m.media-amazon.com/images/I/719lXlNOptL._AC_UL320_.jpg',1272,4.7,'$15.04','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfYXRmX25leHQ6MzAwMDk5MTI5MzAxODAyOjowOjo&url=%2FAnime-Manga-Beginners-Step-Step%2Fdp%2FB09ZCTWDH8%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',56,'2023-12-19 15:17:53.687613-06','2023-12-19 15:17:53.687613-06','www.amazon.com'),
+ (4440,'Shuna''s Journey',NULL,'1250846528','https://m.media-amazon.com/images/I/81w8MPT9fVL._AC_UL320_.jpg',679,4.8,'$16.46','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Shunas-Journey-Hayao-Miyazaki/dp/1250846528/ref=sr_1_52?keywords=manga&qid=1703020672&sr=8-52',56,'2023-12-19 15:17:53.704891-06','2023-12-19 15:17:53.704891-06','www.amazon.com'),
+ (4441,'Blue Lock 3',NULL,'B093XX72CX','https://m.media-amazon.com/images/I/71JQ6EFjg1L._AC_UL320_.jpg',443,4.8,'$10.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Blue-Lock-Vol-Yusuke-Nomura-ebook/dp/B093XX72CX/ref=sr_1_53?keywords=manga&qid=1703020672&sr=8-53',56,'2023-12-19 15:17:53.710702-06','2023-12-19 15:17:53.710702-06','www.amazon.com'),
+ (4442,'Jujutsu Kaisen, Vol. 18 (18)',NULL,'B09SP9RBFY','https://m.media-amazon.com/images/I/81InOZKyKSL._AC_UL320_.jpg',1271,4.9,'$7.68','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gege-Akutami-ebook/dp/B09SP9RBFY/ref=sr_1_54?keywords=manga&qid=1703020672&sr=8-54',56,'2023-12-19 15:17:53.716825-06','2023-12-19 15:17:53.716825-06','www.amazon.com'),
+ (4443,'Soul Eater: The Perfect Edition 01',NULL,'1646090012','https://m.media-amazon.com/images/I/71FDks9l9rL._AC_UL320_.jpg',1751,4.9,'$17.21','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Soul-Eater-Perfect-Atsushi-Ohkubo/dp/1646090012/ref=sr_1_55?keywords=manga&qid=1703020672&sr=8-55',56,'2023-12-19 15:17:53.723117-06','2023-12-19 15:17:53.723117-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4444,'Blade of the Moon Princess, Vol. 1 (1)',NULL,'B0BV1C12D6','https://m.media-amazon.com/images/I/81pFGlgRKqL._AC_UL320_.jpg',27,4.3,'$8.50','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Blade-Moon-Princess-Vol-1-ebook/dp/B0BV1C12D6/ref=sr_1_56?keywords=manga&qid=1703020672&sr=8-56',56,'2023-12-19 15:17:53.72884-06','2023-12-19 15:17:53.72884-06','www.amazon.com'),
+ (4445,'Inside the Tentacle Cave (Manga) Vol. 1',NULL,'B0CJ9WH2WJ','https://m.media-amazon.com/images/I/81FokG-lsNL._AC_UL320_.jpg',21,4.5,'$13.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Inside-Tentacle-Cave-Manga-Vol-ebook/dp/B0CJ9WH2WJ/ref=sr_1_57?keywords=manga&qid=1703020672&sr=8-57',56,'2023-12-19 15:17:53.734823-06','2023-12-19 15:17:53.734823-06','www.amazon.com'),
+ (4446,'How to Draw Anime and Manga for Beginners: Learn to Draw Awesome Anime and Manga Characters - A Step-by-Step Drawing Guide for Kids, Teens, and Adults',NULL,'B0BN8QPP8K','https://m.media-amazon.com/images/I/719lXlNOptL._AC_UL320_.jpg',1272,4.7,'$15.04','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Anime-Manga-Beginners-Step-Step/dp/B0BN8QPP8K/ref=sr_1_58?keywords=manga&qid=1703020672&sr=8-58',56,'2023-12-19 15:17:53.741641-06','2023-12-19 15:17:53.741641-06','www.amazon.com'),
+ (4447,'Spy x Family, Vol. 10 (10)',NULL,'B0BV1HZZ4F','https://m.media-amazon.com/images/I/71+4aMJ1qHL._AC_UL320_.jpg',407,4.8,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spy-x-Family-Vol-10-ebook/dp/B0BV1HZZ4F/ref=sr_1_59?keywords=manga&qid=1703020672&sr=8-59',56,'2023-12-19 15:17:53.748251-06','2023-12-19 15:17:53.748251-06','www.amazon.com'),
+ (4448,'Monster: The Perfect Edition, Vol. 1 (1)',NULL,'142156906X','https://m.media-amazon.com/images/I/81jtWp+Hb9L._AC_UL320_.jpg',1533,4.9,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Monster-Vol-Perfect-Naoki-Urasawa/dp/142156906X/ref=sr_1_60?keywords=manga&qid=1703020672&sr=8-60',56,'2023-12-19 15:17:53.754222-06','2023-12-19 15:17:53.754222-06','www.amazon.com'),
+ (4449,'My Hero Academia, Vol. 36 (36)',NULL,'B0BV1B77VG','https://m.media-amazon.com/images/I/81mydGNiOAL._AC_UL320_.jpg',143,4.9,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/My-Hero-Academia-Vol-36-ebook/dp/B0BV1B77VG/ref=sr_1_61?keywords=manga&qid=1703020672&sr=8-61',56,'2023-12-19 15:17:53.760439-06','2023-12-19 15:17:53.760439-06','www.amazon.com'),
+ (4450,'Chainsaw Man, Vol. 12 (12)',NULL,'B0BV11TYK2','https://m.media-amazon.com/images/I/81yS2PMLZ0L._AC_UL320_.jpg',525,4.8,'$9.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Chainsaw-Man-Vol-Tatsuki-Fujimoto-ebook/dp/B0BV11TYK2/ref=sr_1_62?keywords=manga&qid=1703020672&sr=8-62',56,'2023-12-19 15:17:53.766502-06','2023-12-19 15:17:53.766502-06','www.amazon.com'),
+ (4451,'One Piece, Vol. 1: Romance Dawn',NULL,'1435221443','https://m.media-amazon.com/images/I/71y+XnBXm4L._AC_UL320_.jpg',4538,4.8,'$9.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/One-Piece-1-Romance-Dawn/dp/1435221443/ref=sr_1_63?keywords=manga&qid=1703020672&sr=8-63',56,'2023-12-19 15:17:53.773542-06','2023-12-19 15:17:53.773542-06','www.amazon.com'),
+ (4452,'My Hero Academia, Vol. 3 (3)',NULL,'B01AIXDNIE','https://m.media-amazon.com/images/I/815IWVldmFL._AC_UL320_.jpg',9809,4.9,'$7.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/My-Hero-Academia-Vol-Might-ebook/dp/B01AIXDNIE/ref=sr_1_64?keywords=manga&qid=1703020672&sr=8-64',56,'2023-12-19 15:17:53.781219-06','2023-12-19 15:17:53.781219-06','www.amazon.com'),
+ (4453,'Dandadan, Vol. 1 (1)',NULL,'B0BGMHSL39','https://m.media-amazon.com/images/I/81kHWcb7n4L._AC_UL320_.jpg',723,4.9,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dandadan-Vol-1-Yukinobu-Tatsu-ebook/dp/B0BGMHSL39/ref=sr_1_65?keywords=manga&qid=1703020672&sr=8-65',56,'2023-12-19 15:17:53.78833-06','2023-12-19 15:17:53.78833-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4454,'20th Century Boys: The Perfect Edition, Vol. 1 (1)',NULL,'1421599619','https://m.media-amazon.com/images/I/719RN4X0xZL._AC_UL320_.jpg',1249,4.9,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/20th-Century-Boys-Perfect-Vol/dp/1421599619/ref=sr_1_66?keywords=manga&qid=1703020672&sr=8-66',56,'2023-12-19 15:17:53.795571-06','2023-12-19 15:17:53.795571-06','www.amazon.com'),
+ (4455,'Pink Heart Jam, Vol. 1 (1)',NULL,'B0CMQPFR3M','https://m.media-amazon.com/images/I/71AD1NdxFqL._AC_UL320_.jpg',8,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pink-Heart-Vol-Yaoi-Manga-ebook/dp/B0CMQPFR3M/ref=sr_1_67?keywords=manga&qid=1703020672&sr=8-67',56,'2023-12-19 15:17:53.803962-06','2023-12-19 15:17:53.803962-06','www.amazon.com'),
+ (4456,'Toilet-bound Hanako-kun, Vol. 19 (Toilet-bound Hanako-kun, 19)',NULL,'B0CCW75YZJ','https://m.media-amazon.com/images/I/91585KVEl6L._AC_UL320_.jpg',13,5.0,'$12.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Toilet-bound-Hanako-kun-Vol-19-AidaIro-ebook/dp/B0CCW75YZJ/ref=sr_1_68?keywords=manga&qid=1703020672&sr=8-68',56,'2023-12-19 15:17:53.810998-06','2023-12-19 15:17:53.810998-06','www.amazon.com'),
+ (4457,'Warmtwinl 50PCS Cards Comic Edition The Clow Card Magic Book Set Gifts',NULL,'B07V7SL8M1','https://m.media-amazon.com/images/I/71tCKRTPX9L._AC_UL320_.jpg',9,4.7,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDA2Mjc2OTYzMzc5ODo6MDo6&url=%2FAraonstorm-50PCS-Cardcaptor-Kinomoto-Sakura%2Fdp%2FB07V7SL8M1%2Fref%3Dsr_1_69_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-69-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.818806-06','2023-12-19 15:17:53.818806-06','www.amazon.com'),
+ (4458,'Eat Sleep Anime Repeat Manga Japan Kanji Weeb Vintage Anime T-Shirt',NULL,'B08ZW74YFB','https://m.media-amazon.com/images/I/71EbW6Z-q7L._AC_UL320_.jpg',71,4.4,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDA5MjU0NzUwNzY4MTo6MDo6&url=%2FAnime-Manga-Japan-Vintage-T-Shirt%2Fdp%2FB08ZW74YFB%2Fref%3Dsr_1_70_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-70-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.826206-06','2023-12-19 15:17:53.826206-06','www.amazon.com'),
+ (4459,'Berserker Guts Anime Enamel Pins - Berserker Armor Swordsman Manga Pin - Christmas Cosplay Jewelry Gifts for Kids Girls Teens Women Men and Fans',NULL,'B0BVHWZ4FD','https://m.media-amazon.com/images/I/619my91qRJL._AC_UL320_.jpg',36,5.0,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDEyODE3MjI3NjY5ODo6MDo6&url=%2F3Pcs-Berserker-Guts-Manga-Enamel%2Fdp%2FB0BVHWZ4FD%2Fref%3Dsr_1_71_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-71-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.838048-06','2023-12-19 15:17:53.838048-06','www.amazon.com'),
+ (4460,'How to Draw Anime (Includes Anime, Manga and Chibi) Part 1 Drawing Anime Faces',NULL,'1947215159','https://m.media-amazon.com/images/I/81wzrzqp02L._AC_UL320_.jpg',8798,4.7,'$7.55','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDEwMjMzNTk0MjQ5ODo6MDo6&url=%2FAnime-Manga-Chibi-Drawing-Faces%2Fdp%2F1947215159%2Fref%3Dsr_1_72_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-72-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.845887-06','2023-12-19 15:17:53.845887-06','www.amazon.com'),
+ (4461,'Jujutsu Kaisen, Vol. 5 (5)',NULL,'B08DFCDQ6R','https://m.media-amazon.com/images/I/81w9aLVP9pL._AC_UL320_.jpg',4019,4.9,'$9.29','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Sister-School-Goodwill-ebook/dp/B08DFCDQ6R/ref=sr_1_73?keywords=manga&qid=1703020672&sr=8-73',56,'2023-12-19 15:17:53.852669-06','2023-12-19 15:17:53.852669-06','www.amazon.com'),
+ (4462,'Jujutsu Kaisen, Vol. 17 (17)',NULL,'B09JS7T25Y','https://m.media-amazon.com/images/I/71l8URKoHlL._AC_UL320_.jpg',1297,4.9,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gege-Akutami-ebook/dp/B09JS7T25Y/ref=sr_1_74?keywords=manga&qid=1703020672&sr=8-74',56,'2023-12-19 15:17:53.858532-06','2023-12-19 15:17:53.858532-06','www.amazon.com'),
+ (4463,'Freaking Idiots Guide Ebay Bundle (eBay Selling Made Easy)',NULL,'B00KB47UTE','https://m.media-amazon.com/images/I/61gR52XEeIL._AC_UL320_.jpg',7,4.5,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Freaking-Idiots-Guide-Two-Book-Bundle/dp/B00KB47UTE/ref=sr_1_75?keywords=manga&qid=1703020672&sr=8-75',56,'2023-12-19 15:17:53.865536-06','2023-12-19 15:17:53.865536-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4464,'Dragon Ball Super, Vol. 9 (9)',NULL,'B088WDZKVV','https://m.media-amazon.com/images/I/81oIvgePfDL._AC_UL320_.jpg',3779,4.9,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dragon-Ball-Super-Vol-Aftermath-ebook/dp/B088WDZKVV/ref=sr_1_76?keywords=manga&qid=1703020672&sr=8-76',56,'2023-12-19 15:17:53.871449-06','2023-12-19 15:17:53.871449-06','www.amazon.com'),
+ (4465,'NRGDWXZ Anime Figure,Onna no Ureta ase - Kurosawa Otome - 1/6 Anime Figure Home Decor Collectible Figurines',NULL,'B09SXTHYHY','https://m.media-amazon.com/images/I/41F1y4NgXGL._AC_UL320_.jpg',4,3.2,'$50.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjMwMDEwNTAxNjYzOTkwMjo6MDo6&url=%2FNRGDWXZ-Anime-Figure-Onna-Ureta%2Fdp%2FB09SXTHYHY%2Fref%3Dsr_1_77_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-77-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.877284-06','2023-12-19 15:17:53.877284-06','www.amazon.com'),
+ (4466,'Youtooz Bonk Cheems Vinyl Figure, 3.5" Cheems Vinyl Figure, Cute Shiba Inu Doge Figure - Youtooz Meme Collection Based on Internet Meme',NULL,'B09YKBFHK5','https://m.media-amazon.com/images/I/61-9HBKJJqL._AC_UL320_.jpg',143,4.8,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDA1NzE0MDkzMjU5ODo6MDo6&url=%2FBonk-Cheems-Vinyl-Figure-Shiba%2Fdp%2FB09YKBFHK5%2Fref%3Dsr_1_78_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-78-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.884396-06','2023-12-19 15:17:53.884396-06','www.amazon.com'),
+ (4467,'How to Draw Manga (Includes Anime, Manga and Chibi) Part 1 Drawing Manga Faces (How to Draw Anime)',NULL,'1947215469','https://m.media-amazon.com/images/I/810yAJd8OaL._AC_UL320_.jpg',745,4.7,'$8.44','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDEyMjcyODc3MzA5ODo6MDo6&url=%2FManga-Anime-Chibi-Drawing-Faces%2Fdp%2F1947215469%2Fref%3Dsr_1_79_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-79-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.891587-06','2023-12-19 15:17:53.891587-06','www.amazon.com'),
+ (4468,'Lovestruck Prince! I’ll Fight the Heroine for My Villainess Fiancée! Volume 1',NULL,'B0BW5MGH4Z','https://m.media-amazon.com/images/I/91mG5Ov6Z3L._AC_UL320_.jpg',99,4.4,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjIwMDE0NTYwMzk3MjE5ODo6MDo6&url=%2FLovestruck-Prince-Heroine-Villainess-Fianc%25C3%25A9e-ebook%2Fdp%2FB0BW5MGH4Z%2Fref%3Dsr_1_80_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-80-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.897735-06','2023-12-19 15:17:53.897735-06','www.amazon.com'),
+ (4469,'The Ice Guy and the Cool Girl 01',NULL,'B0BYMK17ZP','https://m.media-amazon.com/images/I/91QCNwRTNOL._AC_UL320_.jpg',58,4.5,'$11.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ice-Guy-Cool-Girl-01-ebook/dp/B0BYMK17ZP/ref=sr_1_81?keywords=manga&qid=1703020672&sr=8-81',56,'2023-12-19 15:17:53.90482-06','2023-12-19 15:17:53.90482-06','www.amazon.com'),
+ (4470,'Death Note Complete Box Set: Volumes 1-13 with Premium',NULL,'142152581X','https://m.media-amazon.com/images/I/71teEs2FRpL._AC_UL320_.jpg',3116,4.9,'$77.01','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Death-Note-Box-Vol-s-1-13/dp/142152581X/ref=sr_1_82?keywords=manga&qid=1703020672&sr=8-82',56,'2023-12-19 15:17:53.911064-06','2023-12-19 15:17:53.911064-06','www.amazon.com'),
+ (4471,'Jujutsu Kaisen, Vol. 7 (7)',NULL,'B08NSZ89SJ','https://m.media-amazon.com/images/I/81+8PTZHyiL._AC_UL320_.jpg',3688,4.9,'$8.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Origin-Obedience-ebook/dp/B08NSZ89SJ/ref=sr_1_83?keywords=manga&qid=1703020672&sr=8-83',56,'2023-12-19 15:17:53.917226-06','2023-12-19 15:17:53.917226-06','www.amazon.com'),
+ (4472,'Dragon Ball Super, Vol. 19 (19)',NULL,'B0BV1C3DC2','https://m.media-amazon.com/images/I/81exshFjhhL._AC_UL320_.jpg',308,4.9,'$8.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dragon-Ball-Super-Vol-19-ebook/dp/B0BV1C3DC2/ref=sr_1_84?keywords=manga&qid=1703020672&sr=8-84',56,'2023-12-19 15:17:53.923371-06','2023-12-19 15:17:53.923371-06','www.amazon.com'),
+ (4473,'I Guess This Dragon Who Lost Her Egg to Disaster Is My Mom Now Volume 1',NULL,'B0C84C9Q5K','https://m.media-amazon.com/images/I/91BwhQbfKCL._AC_UL320_.jpg',153,4.7,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2Nzg4NjY0NzY5MDMzNzE3OjE3MDMwMjA2NzI6c3BfbXRmOjMwMDAyNTczMDQ3OTgwMjo6MDo6&url=%2FGuess-This-Dragon-Lost-Disaster-ebook%2Fdp%2FB0C84C9Q5K%2Fref%3Dsr_1_85_sspa%3Fkeywords%3Dmanga%26qid%3D1703020672%26sr%3D8-85-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',56,'2023-12-19 15:17:53.930112-06','2023-12-19 15:17:53.930112-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4474,'Spy x Family, Vol. 3 (3)',NULL,'B08NSP7LY3','https://m.media-amazon.com/images/I/71POPOUAqVL._AC_UL320_.jpg',5743,4.9,'$7.90','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spy-x-Family-Vol-3-ebook/dp/B08NSP7LY3/ref=sr_1_86?keywords=manga&qid=1703020672&sr=8-86',56,'2023-12-19 15:17:53.936865-06','2023-12-19 15:17:53.936865-06','www.amazon.com'),
+ (4475,'Fist of the North Star, Vol. 1 (1)',NULL,'B00183NUR8','https://m.media-amazon.com/images/I/81lzVPn+yPL._AC_UL320_.jpg',1223,4.9,'$14.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Heart-Chapter-Fist-North-Star/dp/B00183NUR8/ref=sr_1_87?keywords=manga&qid=1703020672&sr=8-87',56,'2023-12-19 15:17:53.942904-06','2023-12-19 15:17:53.942904-06','www.amazon.com'),
+ (4476,'Jujutsu Kaisen, Vol. 11 (11)',NULL,'B099WGWFZR','https://m.media-amazon.com/images/I/81TfMK1X3iL._AC_UL320_.jpg',3715,4.9,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-11-Incident-Gate-ebook/dp/B099WGWFZR/ref=sr_1_88?keywords=manga&qid=1703020672&sr=8-88',56,'2023-12-19 15:17:53.94943-06','2023-12-19 15:17:53.94943-06','www.amazon.com'),
+ (4477,'Jujutsu Kaisen, Vol. 3 (3)',NULL,'B086G9CQM9','https://m.media-amazon.com/images/I/81SB+vu9lzL._AC_UL320_.jpg',5422,4.9,'$6.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gege-Akutami-ebook/dp/B086G9CQM9/ref=sr_1_89?keywords=manga&qid=1703020672&sr=8-89',56,'2023-12-19 15:17:53.956575-06','2023-12-19 15:17:53.956575-06','www.amazon.com'),
+ (4478,'Spy x Family, Vol. 4 (4)',NULL,'B08WRV3MMX','https://m.media-amazon.com/images/I/71-ZeEvOS5L._AC_UL320_.jpg',5033,4.9,'$7.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spy-x-Family-Vol-4-ebook/dp/B08WRV3MMX/ref=sr_1_90?keywords=manga&qid=1703020672&sr=8-90',56,'2023-12-19 15:17:53.962871-06','2023-12-19 15:17:53.962871-06','www.amazon.com'),
+ (4479,'Jujutsu Kaisen, Vol. 15 (15)',NULL,'B09J785SM6','https://m.media-amazon.com/images/I/81Lv0kPDH6L._AC_UL320_.jpg',2110,4.9,'$7.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-15-Incident-Transformation-ebook/dp/B09J785SM6/ref=sr_1_91?keywords=manga&qid=1703020672&sr=8-91',56,'2023-12-19 15:17:53.969679-06','2023-12-19 15:17:53.969679-06','www.amazon.com'),
+ (4480,'Spy x Family, Vol. 6 (6)',NULL,'B09GTMG7DS','https://m.media-amazon.com/images/I/71uLglx4D2L._AC_UL320_.jpg',3714,4.9,'$7.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Spy-x-Family-Vol-6-ebook/dp/B09GTMG7DS/ref=sr_1_92?keywords=manga&qid=1703020672&sr=8-92',56,'2023-12-19 15:17:53.975688-06','2023-12-19 15:17:53.975688-06','www.amazon.com'),
+ (4481,'My Dress-Up Darling 10',NULL,'B0BQLJRTLB','https://m.media-amazon.com/images/I/81Dtv-ACzgL._AC_UL320_.jpg',193,4.8,'$13.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/My-Dress-Up-Darling-Shinichi-Fukuda-ebook/dp/B0BQLJRTLB/ref=sr_1_93?keywords=manga&qid=1703020672&sr=8-93',56,'2023-12-19 15:17:53.981107-06','2023-12-19 15:17:53.981107-06','www.amazon.com'),
+ (4482,'Blue Lock 1',NULL,'B08Y19GQ3P','https://m.media-amazon.com/images/I/81Z85oL1xvL._AC_UL320_.jpg',967,4.8,'$10.30','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Blue-Lock-Vol-Yusuke-Nomura-ebook/dp/B08Y19GQ3P/ref=sr_1_94?keywords=manga&qid=1703020672&sr=8-94',56,'2023-12-19 15:17:53.987077-06','2023-12-19 15:17:53.987077-06','www.amazon.com'),
+ (4483,'My Hero Academia, Vol. 2 (2)',NULL,'B016XB2A5C','https://m.media-amazon.com/images/I/81wv8f5jCWL._AC_UL320_.jpg',11051,4.8,'$7.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/My-Hero-Academia-Vol-Damned-ebook/dp/B016XB2A5C/ref=sr_1_95?keywords=manga&qid=1703020672&sr=8-95',56,'2023-12-19 15:17:53.992638-06','2023-12-19 15:17:53.992638-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4484,'Jujutsu Kaisen, Vol. 14 (14)',NULL,'B09J6NQ6VS','https://m.media-amazon.com/images/I/81ZwggSh1zL._AC_UL320_.jpg',2645,4.9,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-14-Incident-Right-ebook/dp/B09J6NQ6VS/ref=sr_1_96?keywords=manga&qid=1703020672&sr=8-96',56,'2023-12-19 15:17:53.999656-06','2023-12-19 15:17:53.999656-06','www.amazon.com'),
+ (4485,'Homunculus (Omnibus) Vol. 3-4',NULL,'B0CDFJCGSH','https://m.media-amazon.com/images/I/81ioI5j4WTL._AC_UL320_.jpg',40,4.6,'$23.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Homunculus-Omnibus-Vol-Hideo-Yamamoto-ebook/dp/B0CDFJCGSH/ref=sr_1_97?keywords=manga&qid=1703020672&sr=8-97',56,'2023-12-19 15:17:54.00629-06','2023-12-19 15:17:54.00629-06','www.amazon.com'),
+ (4486,'The Apothecary Diaries 10 (Manga)',NULL,'1646091361','https://m.media-amazon.com/images/I/91rWZuBmGKL._AC_UL320_.jpg',124,4.8,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Apothecary-Diaries-10-Manga/dp/1646091361/ref=sr_1_98?keywords=manga&qid=1703020672&sr=8-98',56,'2023-12-19 15:17:54.012381-06','2023-12-19 15:17:54.012381-06','www.amazon.com'),
+ (4487,'Jujutsu Kaisen, Vol. 4 (4)',NULL,'B088W65ZQ8','https://m.media-amazon.com/images/I/814Ppc2uVOL._AC_UL320_.jpg',4906,4.9,'$9.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-Gonna-Kill-ebook/dp/B088W65ZQ8/ref=sr_1_99?keywords=manga&qid=1703020672&sr=8-99',56,'2023-12-19 15:17:54.018237-06','2023-12-19 15:17:54.018237-06','www.amazon.com'),
+ (4488,'Attack on Titan Season 1 Part 2 Manga Box Set (Attack on Titan Manga Box Sets)',NULL,'1632367009','https://m.media-amazon.com/images/I/91izqXwEzVL._AC_UL320_.jpg',2401,4.8,'$22.46','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Attack-Titan-Season-Part-Manga/dp/1632367009/ref=sr_1_100?keywords=manga&qid=1703020672&sr=8-100',56,'2023-12-19 15:17:54.025522-06','2023-12-19 15:17:54.025522-06','www.amazon.com'),
+ (4489,'Solo Leveling, Vol. 3 (comic) (Solo Leveling (comic), 3)',NULL,'B0916CB35Q','https://m.media-amazon.com/images/I/71tnjmKWwJL._AC_UL320_.jpg',2807,4.9,'$12.23','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Solo-Leveling-Vol-3-Chugong-ebook/dp/B0916CB35Q/ref=sr_1_101?keywords=manga&qid=1703020672&sr=8-101',56,'2023-12-19 15:17:54.032967-06','2023-12-19 15:17:54.032967-06','www.amazon.com'),
+ (4490,'Bungo Stray Dogs, Vol. 1 (Volume 1) (Bungo Stray Dogs, 1)',NULL,'B01LX0R0EG','https://m.media-amazon.com/images/I/91Oys66zPBL._AC_UL320_.jpg',1550,4.8,'$10.01','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bungo-Stray-Dogs-Vol-1-ebook/dp/B01LX0R0EG/ref=sr_1_102?keywords=manga&qid=1703020672&sr=8-102',56,'2023-12-19 15:17:54.039255-06','2023-12-19 15:17:54.039255-06','www.amazon.com'),
+ (4491,'Bungo Stray Dogs, Vol. 2 (Volume 2) (Bungo Stray Dogs, 2)',NULL,'B01LZ3XXV5','https://m.media-amazon.com/images/I/71ourYMMPcL._AC_UL320_.jpg',1034,4.8,'$13.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Bungo-Stray-Dogs-Vol-2-ebook/dp/B01LZ3XXV5/ref=sr_1_103?keywords=manga&qid=1703020672&sr=8-103',56,'2023-12-19 15:17:54.045463-06','2023-12-19 15:17:54.045463-06','www.amazon.com'),
+ (4492,'Naruto: 3-in-1 Edition, Vol. 1 (Uzumaki Naruto / The Worst Client / Dreams)',NULL,'1421539896','https://m.media-amazon.com/images/I/818GcRRgOVL._AC_UL320_.jpg',3483,4.8,'$13.42','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Naruto-3-1-Uzumaki-Client/dp/1421539896/ref=sr_1_104?keywords=manga&qid=1703020672&sr=8-104',56,'2023-12-19 15:17:54.052159-06','2023-12-19 15:17:54.052159-06','www.amazon.com'),
+ (4493,'COLORLESS Vol. 1',NULL,'B09YCK6H7Q','https://m.media-amazon.com/images/I/9176ht6pcZL._AC_UL320_.jpg',199,4.7,'$12.60','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/COLORLESS-Vol-1-Kent-ebook/dp/B09YCK6H7Q/ref=sr_1_105?keywords=manga&qid=1703020672&sr=8-105',56,'2023-12-19 15:17:54.059783-06','2023-12-19 15:17:54.059783-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4494,'Zom 100: Bucket List of the Dead, Vol. 1 (1)',NULL,'B08VRRDB1T','https://m.media-amazon.com/images/I/81WRJYFzdqL._AC_UL320_.jpg',1051,4.8,'$11.69','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zom-100-Bucket-List-Dead-ebook/dp/B08VRRDB1T/ref=sr_1_106?keywords=manga&qid=1703020672&sr=8-106',56,'2023-12-19 15:17:54.067198-06','2023-12-19 15:17:54.067198-06','www.amazon.com'),
+ (4495,'The Legend of Zelda - Legendary Edition Box Set',NULL,'1974718190','https://m.media-amazon.com/images/I/71qoC7KFoZL._AC_UL320_.jpg',1257,4.4,'$80.00','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Legend-Zelda-Legendary-Box-Set/dp/1974718190/ref=sr_1_107?keywords=manga&qid=1703020672&sr=8-107',56,'2023-12-19 15:17:54.074001-06','2023-12-19 15:17:54.074001-06','www.amazon.com'),
+ (4496,'Jujutsu Kaisen, Vol. 12 (12)',NULL,'B09GV9QBDT','https://m.media-amazon.com/images/I/81FaJC8-EhL._AC_UL320_.jpg',2905,4.9,'$9.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Jujutsu-Kaisen-Vol-12-Incident-Summon-ebook/dp/B09GV9QBDT/ref=sr_1_108?keywords=manga&qid=1703020672&sr=8-108',56,'2023-12-19 15:17:54.08131-06','2023-12-19 15:17:54.08131-06','www.amazon.com'),
+ (4497,'How To Draw Anime for Kids Basics and Beyond: This Step-By-Step Guide Will Teach You darwings ( Heads, Faces, Bodies, Pose, eyes ) (How To Draw Anime - Manga)',NULL,'B0BJHGR2WK','https://aax-us-iad.amazon.com/e/loi/imp?b=JPwK4mTw9RLgyPprdq6g3NgAAAGMg_E36gEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICBOyF6W',132,4.7,'$15.04','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RPwK4mTw9RLgyPprdq6g3NgAAAGMg_E3xQEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICBOyF6W/https://www.amazon.com/Anime-Basics-Beyond-Step-Step/dp/B0BJHGR2WK/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b%3Aamzn1.sym.2066ba78-527e-4aed-9de4-3ba096deb87b&cv_ct_cx=manga&keywords=manga&pd_rd_i=B0BJHGR2WK&pd_rd_r=ccd9e2e8-d67d-4520-8d69-aa27722a8095&pd_rd_w=3L8UU&pd_rd_wg=xLGui&pf_rd_p=2066ba78-527e-4aed-9de4-3ba096deb87b&pf_rd_r=XK9JDG0SH1Q876QE55DT&qid=1703020672&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-49-48f7baba-8e26-45f3-8811-e1a601ad20bf',56,'2023-12-19 15:17:54.088421-06','2023-12-19 15:17:54.088421-06','www.amazon.comhttps:'),
+ (4498,'Shoe Dust Bags - 4 Pack Black Duster Flannel Single Shoe Pouch with Drawstring Closure, Washable Breathable Cotton Fabric Cloth for Travel, Home, Luggage, Handbags, Storage, Accessories - 8x17',NULL,'B09DNDF4QV','https://m.media-amazon.com/images/I/81ry4CX3BoL._AC_UL320_.jpg',820,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfYXRmOjIwMDA5OTcwMjUwMzM3MTo6MDo6&url=%2FFlannel-Storage-Drawstring-Washable-Multifunctional%2Fdp%2FB09DNDF4QV%2Fref%3Dsr_1_1_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',57,'2023-12-19 15:18:00.386421-06','2023-12-19 15:18:00.386421-06','www.amazon.com'),
+ (4500,'FYY Travel Cable Organizer Pouch Electronic Accessories Carry Case Portable Waterproof Double Layers All-in-One Storage Bag for Cord, Charger, Phone, Earphone Black',NULL,'B0924H4XB9','https://m.media-amazon.com/images/I/81hLyL0rX2S._AC_UL320_.jpg',18826,4.5,'$9.85','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfYXRmOjIwMDE0NjU3OTAzNTA5ODo6MDo6&url=%2FFYY-Electronic-Organizer-Accessories-Waterproof%2Fdp%2FB0924H4XB9%2Fref%3Dsr_1_3_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-3-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1%26smid%3DA222X4SZL8V9A5',57,'2023-12-19 15:18:00.404215-06','2023-12-19 15:18:00.411279-06','www.amazon.com'),
+ (4501,'ZPROW Travel Jewelry Case, Mini Portable Jewelry Travel Boxes, Small Jewelry Organizer for Rings, Earrings, Pendants, Watches, Necklaces, Lipsticks Organizer Storage Holder Case (Pink)',NULL,'B0BX8NQBJS','https://m.media-amazon.com/images/I/71UU9Dovb4L._AC_UL320_.jpg',337,4.6,'$7.58','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ZPROW-Portable-Organizer-Necklaces-Lipsticks/dp/B0BX8NQBJS/ref=sr_1_5?keywords=travel+accessories&qid=1703020679&sr=8-5',57,'2023-12-19 15:18:00.418045-06','2023-12-19 15:18:00.418045-06','www.amazon.com'),
+ (4502,'napfun Neck Pillow for Traveling, Upgraded Travel Neck Pillow for Airplane 100% Pure Memory Foam Travel Pillow for Flight Headrest Sleep, Portable Plane Accessories, Light Grey',NULL,'B07SRRQS5B','https://m.media-amazon.com/images/I/91GsUY-yrWL._AC_UL320_.jpg',12671,4.4,'$13.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Traveling-Upgraded-Airplane-Headrest-Accessories/dp/B07SRRQS5B/ref=sr_1_6?keywords=travel+accessories&qid=1703020679&sr=8-6',57,'2023-12-19 15:18:00.426203-06','2023-12-19 15:18:00.426203-06','www.amazon.com'),
+ (4499,'ALL INCLUDED 10 Set Durable Packing Cubes for Suitcases,OlarHike Travel Essentials,UPGRADED Anti-Tear Stitching, NEW Improved Luggage Packing Organizers for Travel Accessories(Black)',NULL,'B0BMVH7JDS','https://m.media-amazon.com/images/I/710IWgvzyBL._AC_UL320_.jpg',955,4.7,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfYXRmOjMwMDAyNTUwMDYxMTkwMjo6MDo6&url=%2FOlarHike-Essentials-Suitcases-Organizers-Accessories%2Fdp%2FB0BMVH7JDS%2Fref%3Dsr_1_2_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-2-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1',57,'2023-12-19 15:18:00.395408-06','2023-12-19 15:18:08.010642-06','www.amazon.com'),
+ (4596,'Miamica Soft Travel Laundry Bag with Zipper & Drawstring, 21” x 22” – Keep Your Dirty Clothes Separate & Organized',NULL,'B01FWDLMZG','https://m.media-amazon.com/images/I/5110-ezP88L._AC_UL320_.jpg',2359,4.7,'$8.93','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Miamica-Bag-Dirty-Laundry-Gray/dp/B01FWDLMZG/ref=sr_1_108?keywords=travel+accessories&qid=1703020686&sr=8-108',57,'2023-12-19 15:18:08.161457-06','2023-12-19 15:18:08.161457-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4505,'BAGSMART 6 Set/4 Set/2 Set Compression Packing Cubes for Travel, Lightweight Vacation Travel Essentials, Travel Accessories for Suitcase Organizer Bags Set, Durable Luggage Organizer Travel Bags',NULL,'B0CJXB2P46','https://m.media-amazon.com/images/I/71Xgoq7lsTL._AC_UL320_.jpg',7563,4.6,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2MDM4NTQwNjgwNDM5NzE3OjE3MDMwMjA2Nzk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA4NDYyNzMzOTEwMjo6MTo6&url=%2FBAGSMART-Compression-Lightweight-Essentials-Accessories%2Fdp%2FB0CJXB2P46%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dtravel%2Baccessories%26keywords%3Dtravel%2Baccessories%26pd_rd_i%3DB0CJXB2P46%26pd_rd_r%3Dfc81a4a3-ffbf-45bc-a40c-f7499dc39017%26pd_rd_w%3DP2Jkb%26pd_rd_wg%3DBZfdF%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DEEX4P84285A70Z1M14Y4%26qid%3D1703020679%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-2-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',57,'2023-12-19 15:18:00.449327-06','2023-12-19 15:18:00.449327-06','www.amazon.com'),
+ (4506,'Veken 6 Set Packing Cubes for Suitcases, Travel Organizer Bags for Carry on Luggage, Suitcase Organizer Bags Set for Travel Essentials Travel Accessories in 4 Sizes(Extra Large, Large, Medium, Small)',NULL,'B09YPQ8J7B','https://m.media-amazon.com/images/I/71PgW3i2yYL._AC_UL320_.jpg',23530,4.7,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2MDM4NTQwNjgwNDM5NzE3OjE3MDMwMjA2Nzk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA1ODAzNjMyODEwMjo6Mjo6&url=%2FVeken-Suitcase-Organizer-Accessories-Essentials%2Fdp%2FB09YPQ8J7B%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dtravel%2Baccessories%26keywords%3Dtravel%2Baccessories%26pd_rd_i%3DB09YPQ8J7B%26pd_rd_r%3Dfc81a4a3-ffbf-45bc-a40c-f7499dc39017%26pd_rd_w%3DP2Jkb%26pd_rd_wg%3DBZfdF%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DEEX4P84285A70Z1M14Y4%26qid%3D1703020679%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',57,'2023-12-19 15:18:00.455092-06','2023-12-19 15:18:00.455092-06','www.amazon.com'),
+ (4507,'Ceptics Australia, China Travel Adapter - 5 Input with 20W PD-QC 3.1A Dual USB-C and USB - Ultra Compact - Light Weight - USA to Any Type I Countries Such as New Zealand, Argentina and More',NULL,'B09RQQ1QZQ','https://m.media-amazon.com/images/I/61moPD96yRL._AC_UL320_.jpg',492,4.6,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2MDM4NTQwNjgwNDM5NzE3OjE3MDMwMjA2Nzk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDEwNzQ5MTI0MTgwMjo6Mzo6&url=%2FAustralia-China-Travel-Adapter-Ceptics%2Fdp%2FB09RQQ1QZQ%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dtravel%2Baccessories%26keywords%3Dtravel%2Baccessories%26pd_rd_i%3DB09RQQ1QZQ%26pd_rd_r%3Dfc81a4a3-ffbf-45bc-a40c-f7499dc39017%26pd_rd_w%3DP2Jkb%26pd_rd_wg%3DBZfdF%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DEEX4P84285A70Z1M14Y4%26qid%3D1703020679%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',57,'2023-12-19 15:18:00.46058-06','2023-12-19 15:18:00.46058-06','www.amazon.com'),
+ (4504,'Veken 8 Set Packing Cubes for Suitcases, Travel Essentials for Carry on, Luggage Organizer Bags Set for Travel Accessories in 4 Sizes (Extra Large, Large, Medium, Small), Black',NULL,'B0B7BFMHNF','https://m.media-amazon.com/images/I/71hxdVXOB+L._AC_UL320_.jpg',11660,4.7,'$16.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2MDM4NTQwNjgwNDM5NzE3OjE3MDMwMjA2Nzk6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDA1OTY1MTc0MTkwMjo6MDo6&url=%2FVeken-Accessories-Essentials-Organizer-Suitcases%2Fdp%2FB0B7BFMHNF%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dtravel%2Baccessories%26keywords%3Dtravel%2Baccessories%26pd_rd_i%3DB0B7BFMHNF%26pd_rd_r%3Dfc81a4a3-ffbf-45bc-a40c-f7499dc39017%26pd_rd_w%3DP2Jkb%26pd_rd_wg%3DBZfdF%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DEEX4P84285A70Z1M14Y4%26qid%3D1703020679%26sbo%3DTc8eqSFhUl4VwMzbE4fw%252Fw%253D%253D%26sr%3D1-1-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',57,'2023-12-19 15:18:00.442216-06','2023-12-19 15:18:00.476126-06','www.amazon.com'),
+ (4597,'kakoya Flameless LED Candles with Timer 5 Pc Flickering Flameless Candles for Romantic Ambiance and Home Decoration Durable Acrylic Shell,with Embedded Star String,Battery Operated Candles(Grey)',NULL,'B0BXCYHTGN','https://m.media-amazon.com/images/I/71OGdS2e7ML._AC_UL320_.jpg',540,4.3,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/kakoya-Flickering-Decoration-String%EF%BC%8CBattery-Candles%EF%BC%88Grey%EF%BC%89/dp/B0BXCYHTGN/ref=sr_1_1?keywords=decoration&qid=1703020694&sr=8-1',58,'2023-12-19 15:18:16.049094-06','2023-12-19 15:18:16.049094-06','www.amazon.com'),
+ (4503,'Fosmon Digital Luggage Scale (2 Pack), LCD Display Backlight Temperature Baggage Scale w/ 110lbs Capacity, Portable Stainless Steel Hanging Luggage Weight Scale w/ Tare Function for Travelers - Silver',NULL,'B01N5QP2I9','https://m.media-amazon.com/images/I/71ILFTShsiL._AC_UL320_.jpg',2620,4.7,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo2MDM4NTQwNjgwNDM5NzE3OjE3MDMwMjA2Nzk6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE2OTYwOTU1OTU5ODo6NDo6&url=%2FDigital-Fosmon-Backlight-Temperature-Function%2Fdp%2FB01N5QP2I9%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Dtravel%2Baccessories%26keywords%3Dtravel%2Baccessories%26pd_rd_i%3DB01N5QP2I9%26pd_rd_r%3Dfc81a4a3-ffbf-45bc-a40c-f7499dc39017%26pd_rd_w%3DP2Jkb%26pd_rd_wg%3DBZfdF%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DEEX4P84285A70Z1M14Y4%26qid%3D1703020679%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-5-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',57,'2023-12-19 15:18:00.434489-06','2023-12-19 15:18:00.465691-06','www.amazon.com'),
+ (4508,'Electronic Organizer Travel USB Cable Accessories Bag/Case,Waterproof for Power Bank,Charging Cords,Chargers,Mouse ,Earphones Flash Drive',NULL,'B08YZ633BY','https://m.media-amazon.com/images/I/81i0r0ZKd7L._AC_UL320_.jpg',5596,4.4,'$6.94','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Electronic-Organizer-Accessories-Waterproof-Earphones/dp/B08YZ633BY/ref=sr_1_7?keywords=travel+accessories&qid=1703020679&sr=8-7',57,'2023-12-19 15:18:00.471024-06','2023-12-19 15:18:00.471024-06','www.amazon.com'),
+ (4509,'BAGSMART Toiletry Bag Travel Bag with Hanging Hook, Water-resistant Makeup Cosmetic Bag Travel Organizer for Accessories, Shampoo, Full-size Container, Toiletries',NULL,'B07SL2X217','https://m.media-amazon.com/images/I/71OALypQqJL._AC_UL320_.jpg',50631,4.8,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Water-resistant-Organizer-Accessories-Container-Toiletries/dp/B07SL2X217/ref=sr_1_9?keywords=travel+accessories&qid=1703020679&sr=8-9',57,'2023-12-19 15:18:00.484103-06','2023-12-19 15:18:00.484103-06','www.amazon.com'),
+ (4510,'MiiKARE Airplane Travel Essentials Phone Holder, Universal Handsfree Phone Mount for Flying with 360 Degree Rotation, Accessory for Airplane, Travel Must Haves Phone Stand for Desk, Tray Table',NULL,'B07MYW7C3Z','https://m.media-amazon.com/images/I/61xHQoosSAL._AC_UL320_.jpg',4867,4.5,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MiiKARE-Universal-Rotating-Adjustable-Compatible/dp/B07MYW7C3Z/ref=sr_1_10?keywords=travel+accessories&qid=1703020679&sr=8-10',57,'2023-12-19 15:18:00.489706-06','2023-12-19 15:18:00.489706-06','www.amazon.com'),
+ (4514,'Poo-Pourri Before-You-Go Toilet Spray, Original Citrus, Travel Size 10 mL - Lemon, Bergamot and Lemongrass, 0.34 Fl Oz (Pack of 1)',NULL,'B07CN6ZDVY','https://m.media-amazon.com/images/I/51-TSawxo4L._AC_UL320_.jpg',99936,4.7,'$4.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Poo-Pourri-Before-You-Go-Toilet-Travel-Original/dp/B07CN6ZDVY/ref=sr_1_16?keywords=travel+accessories&qid=1703020679&sr=8-16',57,'2023-12-19 15:18:00.51345-06','2023-12-19 15:18:00.51345-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4512,'Passport Holder Cover Wallet Travel Essentials Leather Travel Wallet Rfid Blocking Case Vacation Travel Must Haves Travel Accessories for Men Women (2#Brown)',NULL,'B09DTD4XJG','https://m.media-amazon.com/images/I/81jJTx3fcLL._AC_UL320_.jpg',7133,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjIwMDE2NjExMzU3MDI5ODo6MDo6&url=%2FPassport-Vaccine-Holder-Leather-Blocking%2Fdp%2FB09DTD4XJG%2Fref%3Dsr_1_14_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-14-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.502013-06','2023-12-19 15:18:07.998321-06','www.amazon.com'),
+ (4511,'NISHEL Travel Toiletry Bag for women, Portable Hanging Organizer for Full-Sized Shampoo, Conditioner, Brushes Set, Travel-Size Accessories, Pink',NULL,'B08JPKFYPG','https://m.media-amazon.com/images/I/71G3TAmEQHL._AC_UL320_.jpg',10588,4.8,'$22.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjIwMDA1ODk3Nzc5MjA5ODo6MDo6&url=%2FNISHEL-Organizer-Full-Sized-Conditioner-Accessories%2Fdp%2FB08JPKFYPG%2Fref%3Dsr_1_11_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-11-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.495379-06','2023-12-19 15:18:08.064398-06','www.amazon.com'),
+ (4519,'Sensyne 60" Phone Tripod & Selfie Stick, Lightweight All in One Phone Tripod Integrated with Wireless Remote Compatible with All Cell Phones for Selfie/Video Recording/Photo/Live Stream/Vlog(Black)',NULL,'B0BD7VTXN3','https://m.media-amazon.com/images/I/61zOhjOHX6L._AC_UL320_.jpg',3193,4.6,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjIwMDE3NzE2NTQ3MDY5ODo6MDo6&url=%2FLightweight-Integrated-Wireless-Compatible-Recording%2Fdp%2FB0BD7VTXN3%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.544453-06','2023-12-19 15:18:08.059229-06','www.amazon.com'),
+ (4516,'INIU Portable Charger, Slimmest 10000mAh 5V/3A Power Bank, USB C in&out High-Speed Charging Battery Pack, External Phone Powerbank Compatible with iPhone 15 14 13 12 11 Samsung S22 S21 Google iPad etc',NULL,'B07CZDXDG8','https://m.media-amazon.com/images/I/51AOZq9HhEL._AC_UL320_.jpg',84743,4.6,'$19.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/INIU-High-Speed-Flashlight-Powerbank-Compatible/dp/B07CZDXDG8/ref=sr_1_17?keywords=travel+accessories&qid=1703020679&sr=8-17',57,'2023-12-19 15:18:00.525725-06','2023-12-19 15:18:00.525725-06','www.amazon.com'),
+ (4517,'Etekcity Luggage Scale, Travel Essentials, Digital Weight Scales for Travel Accessories, Portable Handheld Scale with Temperature Sensor, Rubber Paint, 110 Pounds, Battery Included, Blue',NULL,'B082LYC2TN','https://m.media-amazon.com/images/I/81TfNMQ2H8L._AC_UL320_.jpg',20407,4.7,'$10.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Etekcity-Portable-Handheld-Suitcase-Temperature/dp/B082LYC2TN/ref=sr_1_18?keywords=travel+accessories&qid=1703020679&sr=8-18',57,'2023-12-19 15:18:00.532169-06','2023-12-19 15:18:00.532169-06','www.amazon.com'),
+ (4518,'SAUNORCH Universal International Travel Power Adapter W/High Speed 2.4A USB-A, 3.0A Type-C Wall Charger, European Adapter, Worldwide AC Outlet Plugs Adapters for Europe, UK, US, AU, Asia-Green',NULL,'B07H98ZQYJ','https://m.media-amazon.com/images/I/61FawSKxrNL._AC_UL320_.jpg',3503,4.6,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjIwMDA1MDA3MjgyNzQ5ODo6MDo6&url=%2FSAUNORCH-Universal-International-Worldwide-Asia-Green%2Fdp%2FB07H98ZQYJ%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.538271-06','2023-12-19 15:18:00.538271-06','www.amazon.com'),
+ (4520,'Packing Cubes for Travel-Extra Large Luggage Organizers 7 Piece Set-Ultralight, Expandable/Compression Bags for Clothes by TRIPPED Travel Gear (National Parks)',NULL,'B09PC9GZ5D','https://m.media-amazon.com/images/I/91kR-9Sy-hL._AC_UL320_.jpg',1738,4.6,'$54.95','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjIwMDA1MjU1NDk5NDI5ODo6MDo6&url=%2FTravel-Extra-Set-Ultralight-TRIPPED-Travel-Gear%2Fdp%2FB09PC9GZ5D%2Fref%3Dsr_1_21_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-21-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.550989-06','2023-12-19 15:18:00.550989-06','www.amazon.com'),
+ (4521,'Telena Travel Toiletry Bag for Women, Toiletry Bag Travel Bag with Hanging Hook, Water-resistant Makeup Organizer, Cosmetic Bag Travel Accessories, Beige with Brown',NULL,'B0B96ZLHPK','https://m.media-amazon.com/images/I/71lqcRj+IqL._AC_UL320_.jpg',85,4.6,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NDA4MjkzNzE0NTk4NzE3OjE3MDMwMjA2Nzk6c3BfbXRmOjMwMDAxOTkwNjc3NTkwMjo6MDo6&url=%2FTelena-Toiletry-Water-resistant-Organizer-Accessories%2Fdp%2FB0B96ZLHPK%2Fref%3Dsr_1_22_sspa%3Fkeywords%3Dtravel%2Baccessories%26qid%3D1703020679%26sr%3D8-22-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',57,'2023-12-19 15:18:00.558128-06','2023-12-19 15:18:00.558128-06','www.amazon.com'),
+ (4598,'FANTESTICRYAN Small Birds Statues Gold Home Decor Modern Style Figurine Decorative Ornaments for Living Room, Bedroom, Office Desktop, Cabinets',NULL,'B07SPKC554','https://m.media-amazon.com/images/I/71SKqRaBtwL._AC_UL320_.jpg',7050,4.7,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Fantastic-Ryan-Decorative-Originality-Furnishing/dp/B07SPKC554/ref=sr_1_2?keywords=decoration&qid=1703020694&sr=8-2',58,'2023-12-19 15:18:16.059135-06','2023-12-19 15:18:16.059135-06','www.amazon.com'),
+ (4522,'TRANOMOS 8 Pack Silicone Bottle Covers, Travel Essentials for Women Men, Travel Size Toiletries, Cruise Ship Essentials, Accessories Luggage, Travel Must Haves, Elastic Sleeves for Leak Proofing',NULL,'B0BQ7PD5YW','https://m.media-amazon.com/images/I/61bAV7VnIZL._AC_UL320_.jpg',1343,4.3,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Proofing-Silicone-Accessories-Toiletries-Container/dp/B0BQ7PD5YW/ref=sr_1_23?keywords=travel+accessories&qid=1703020679&sr=8-23',57,'2023-12-19 15:18:00.564747-06','2023-12-19 15:18:00.564747-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4523,'Airplane Travel Essentials for Flying Flex Flap Cell Phone Holder & Flexible Tablet Stand for Desk, Bed, Treadmill, Home & in-Flight Airplane Travel Accessories - Travel Must Haves Cool Gadgets',NULL,'B07VJZ6YF6','https://m.media-amazon.com/images/I/91dAiGftDyL._AC_UL320_.jpg',4793,4.5,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Flight-Airplane-Accessories-Gadgets-Universal/dp/B07VJZ6YF6/ref=sr_1_25?keywords=travel+accessories&qid=1703020679&sr=8-25',57,'2023-12-19 15:18:00.571005-06','2023-12-19 15:18:00.571005-06','www.amazon.com'),
+ (4524,'Colgate Max Fresh Wisp Disposable Mini Travel Toothbrushes, Peppermint, 24 Count (Pack of 4)',NULL,'B071DPCBQG','https://m.media-amazon.com/images/I/81LR8rKCuXL._AC_UL320_.jpg',32296,4.7,'$17.92','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Colgate-Fresh-Disposable-Toothbrush-Peppermint/dp/B071DPCBQG/ref=sr_1_26?keywords=travel+accessories&qid=1703020679&sr=8-26',57,'2023-12-19 15:18:00.577126-06','2023-12-19 15:18:00.577126-06','www.amazon.com'),
+ (4526,'KAYZON Travel Mini Perfume Refillable Atomizer Container, Portable Perfume Scent Pump Case Fragrance Empty Spray Bottle for Traveling and Outgoing (3 Pack, 5ml) (3 Pcs)',NULL,'B09DYN6SYR','https://m.media-amazon.com/images/I/51PNOzxhILL._AC_UL320_.jpg',6452,4.3,'$5.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Refillable-Atomizer-Container-Fragrance-Traveling/dp/B09DYN6SYR/ref=sr_1_28?keywords=travel+accessories&qid=1703020679&sr=8-28',57,'2023-12-19 15:18:00.589623-06','2023-12-19 15:18:00.589623-06','www.amazon.com'),
+ (4528,'HOMEST 2 Pack XL Wash Me Travel Laundry Bag, Dirty Clothes Organizer, Large Enough to Hold 4 Loads of Laundry, Easy Fit a Laundry Hamper or Basket',NULL,'B07LCH3XN7','https://m.media-amazon.com/images/I/71z6zyZgWSS._AC_UL320_.jpg',17950,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/HOMEST-Travel-Laundry-Clothes-Organizer/dp/B07LCH3XN7/ref=sr_1_31?keywords=travel+accessories&qid=1703020679&sr=8-31',57,'2023-12-19 15:18:00.601395-06','2023-12-19 15:18:00.601395-06','www.amazon.com'),
+ (4529,'Travel Makeup Mirror with 10X Magnifying Mirror, Vanity Mirror with 80LEDs, 3 Color Lighting, Rechargeable 2000mAh Batteries, Portable Ultra Slim Lighted Makeup Mirror, Travel Essential for Women',NULL,'B0B7X8CWZM','https://m.media-amazon.com/images/I/51q667bfW6L._AC_UL320_.jpg',4695,4.4,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Magnifying-Lighting-Rechargeable-Batteries-Essentials/dp/B0B7X8CWZM/ref=sr_1_32?keywords=travel+accessories&qid=1703020679&sr=8-32',57,'2023-12-19 15:18:00.607694-06','2023-12-19 15:18:00.607694-06','www.amazon.com'),
+ (4530,'Hiearcool Waterproof Phone Pouch, Waterproof Phone Case for iPhone 15 14 13 12 Pro Max XS Samsung, IPX8 Cellphone Dry Bag Beach Essentials 2Pack-8.3"',NULL,'B079HV3TC9','https://m.media-amazon.com/images/I/61JkEouNSAL._AC_UL320_.jpg',92416,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Hiearcool-Waterproof-Phone-Pouch-Underwater-2/dp/B079HV3TC9/ref=sr_1_33?keywords=travel+accessories&qid=1703020679&sr=8-33',57,'2023-12-19 15:18:00.61336-06','2023-12-19 15:18:00.61336-06','www.amazon.com'),
+ (4527,'Airplane Foot Hammock (Memory Foam), Perfect Airplane Footrest to Relax Your Feet | Foot Hammock for Airplane Travel Accessories, Desk Foot Hammock, Travel Foot Rest, Comfy Foot Hanger Airplane',NULL,'B07SK6ZFLM','https://aax-us-iad.amazon.com/e/loi/imp?b=JHK6LkLZ6jbPdkxONCWpLdoAAAGMg_FvBQEAAAH2AQBvbm9fdHhuX2JpZDIgICBvbm9fdHhuX2ltcDEgICCsG4ks',3736,4.1,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/airplane-footrest-foot-hammock-travel-essentials-rest/dp/B07SK6ZFLM/ref=sr_1_29?keywords=travel+accessories&qid=1703020679&sr=8-29',57,'2023-12-19 15:18:00.595564-06','2023-12-19 15:18:08.168693-06','www.amazon.com'),
+ (4531,'Twelve South AirFly SE, Premium Bluetooth Wireless Audio Transmitter for AirPods or Wireless Headphones - Use with Any 3.5 mm Audio Jack for In-Flight, TV, Gym and Tablets, White, 1" by 4"',NULL,'B0BQZBMXD4','https://m.media-amazon.com/images/I/51HhyUqXImL._AC_UL320_.jpg',1987,4.4,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Twelve-South-Transmitter-Noise-Cancelling-Headphones/dp/B0BQZBMXD4/ref=sr_1_34?keywords=travel+accessories&qid=1703020679&sr=8-34',57,'2023-12-19 15:18:00.618878-06','2023-12-19 15:18:00.618878-06','www.amazon.com'),
+ (4532,'Gorilla Grip 6 Piece Packing Cubes Set, Compression Space Saving Organizers for Suitcases and Luggage, Mesh Window Bags, Travel Essentials for Carry On, Clothes and Shoes, Cube with Zipper, Turquoise',NULL,'B0B9YRY9MW','https://m.media-amazon.com/images/I/81t0ioHcCPL._AC_UL320_.jpg',1279,4.5,'$16.94','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Gorilla-Grip-Organizer-Lightweight-Suitcases/dp/B0B9YRY9MW/ref=sr_1_35?keywords=travel+accessories&qid=1703020679&sr=8-35',57,'2023-12-19 15:18:00.624476-06','2023-12-19 15:18:00.624476-06','www.amazon.com'),
+ (4533,'BAGSMART Electronics Organizer Travel Case, Small Cable Organizer Bag for Travel Essentials, Travel Tech Organizer as Travel Accessories, Cord Organizer for Phone, Power Bank, SD Card, Black',NULL,'B017SKRWL4','https://m.media-amazon.com/images/I/715h98AKwDL._AC_UL320_.jpg',5207,4.6,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/BAGSMART-Universal-Organizer-Electronics-Accessories/dp/B017SKRWL4/ref=sr_1_37?keywords=travel+accessories&qid=1703020679&sr=8-37',57,'2023-12-19 15:18:00.629903-06','2023-12-19 15:18:00.629903-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4534,'Miamica Foldable Travel Laundry Bag, Grey & Gold – Measures 21” x 22” When Fully Opened – Foldable Laundry Bag with Drawstring Closure – Durable, Lightweight Travel Accessories',NULL,'B06XP9TPKS','https://m.media-amazon.com/images/I/51dHy8CWTGL._AC_UL320_.jpg',5060,4.7,'$10.70','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Miamica-Laundry-Assorted-Styles-Grey/dp/B06XP9TPKS/ref=sr_1_39?keywords=travel+accessories&qid=1703020679&sr=8-39',57,'2023-12-19 15:18:00.635425-06','2023-12-19 15:18:00.635425-06','www.amazon.com'),
+ (4535,'YAMIU Travel Shoe Bags Set of 4 Waterproof Nylon with Zipper for Men & Women, Black',NULL,'B01N4B7C9X','https://m.media-amazon.com/images/I/71FsEUFT1jL._AC_UL320_.jpg',10190,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/YAMIU-Travel-Waterproof-Nylon-Zipper/dp/B01N4B7C9X/ref=sr_1_40?keywords=travel+accessories&qid=1703020679&sr=8-40',57,'2023-12-19 15:18:00.641054-06','2023-12-19 15:18:00.641054-06','www.amazon.com'),
+ (4536,'Travel Adapter, Universal All in One Worldwide Travel Adapter Power Converters Wall Charger AC Power Plug Adapter with Dual USB Charging Ports for USA EU UK AUS Black',NULL,'B01FO4W5W2','https://m.media-amazon.com/images/I/51TObDkKtCL._AC_UL320_.jpg',7864,4.5,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/NEWVANGA-International-Universal-Worldwide-Charging/dp/B01FO4W5W2/ref=sr_1_41?keywords=travel+accessories&qid=1703020679&sr=8-41',57,'2023-12-19 15:18:00.646703-06','2023-12-19 15:18:00.646703-06','www.amazon.com'),
+ (4537,'2 Pcs Luggage Tags, Fintie Privacy Cover ID Label with Stainless Steel Loop and Address Card for Travel Bag Suitcase',NULL,'B0969MLLDJ','https://m.media-amazon.com/images/I/81M8ugDMh5S._AC_UL320_.jpg',5456,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Luggage-Fintie-Privacy-Stainless-Suitcase/dp/B0969MLLDJ/ref=sr_1_42?keywords=travel+accessories&qid=1703020679&sr=8-42',57,'2023-12-19 15:18:00.652219-06','2023-12-19 15:18:00.652219-06','www.amazon.com'),
+ (4538,'OlarHike 8 Set Packing Cubes for Travel, 4 Various Sizes(Extra Large,Large,Medium,Small), Luggage Organizer Bags for Travel Accessories Travel Essentials, Travel Cubes for Carry on Suitcases (Cream)',NULL,'B0BGWZN7MV','https://m.media-amazon.com/images/I/71gl8WnTZUL._AC_UL320_.jpg',1102,4.6,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/OlarHike-Organizer-Accessories-Essentials-Suitcases/dp/B0BGWZN7MV/ref=sr_1_43?keywords=travel+accessories&qid=1703020679&sr=8-43',57,'2023-12-19 15:18:00.657603-06','2023-12-19 15:18:00.657603-06','www.amazon.com'),
+ (4539,'EACHY Travel Makeup Bag,Large Capacity Cosmetic Bags for Women,Waterproof Portable Pouch Open Flat Toiletry Bag Make up Organizer with Divider and Handle (Brown, Medium)',NULL,'B0BRR6Q2ZD','https://m.media-amazon.com/images/I/61eLxA1uvyL._AC_UL320_.jpg',1134,4.6,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/EACHY-Capacity-Cosmetic-Waterproof-Organizer/dp/B0BRR6Q2ZD/ref=sr_1_44?keywords=travel+accessories&qid=1703020679&sr=8-44',57,'2023-12-19 15:18:00.663325-06','2023-12-19 15:18:00.663325-06','www.amazon.com'),
+ (4540,'Zuihug 1Pack Travel Pill Organizer - 10 Compartments Pill Case, Compact and Portable Pill Box, Perfect for On-The-Go Storage, Pill Holder for Purse Gray',NULL,'B0C5R981CT','https://m.media-amazon.com/images/I/61THQCBMSyL._AC_UL320_.jpg',1509,4.7,'$3.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zuihug-1Pack-Travel-Pill-Organizer/dp/B0C5R981CT/ref=sr_1_45?keywords=travel+accessories&qid=1703020679&sr=8-45',57,'2023-12-19 15:18:00.668545-06','2023-12-19 15:18:00.668545-06','www.amazon.com'),
+ (4541,'Dot&Dot Twist Memory Foam Travel Pillow for Neck, Chin, Lumbar and Leg Support - Neck Pillows for Sleeping Travel Airplane for Side, Stomach and Back Sleepers - Adjustable, Bendable Roll Pillow',NULL,'B01IEJHJWK','https://m.media-amazon.com/images/I/81Ah56ih4RL._AC_UL320_.jpg',13921,4.3,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Memory-Travel-Pillow-Lumbar-Support/dp/B01IEJHJWK/ref=sr_1_46?keywords=travel+accessories&qid=1703020679&sr=8-46',57,'2023-12-19 15:18:00.673819-06','2023-12-19 15:18:00.673819-06','www.amazon.com'),
+ (4542,'Portable Door Lock Travel Hotel Safety: Hotel Door Locks for Travelers, Home Apartment Security Locker from Inside Room Bedroom Women Travel Gifts Traveler Stocking Stuffers Traveling Essentials',NULL,'B09VJZYC9R','https://m.media-amazon.com/images/I/71cTJiUTBBL._AC_UL320_.jpg',1163,4.3,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Portable-Door-Lock-Home-Security/dp/B09VJZYC9R/ref=sr_1_47?keywords=travel+accessories&qid=1703020679&sr=8-47',57,'2023-12-19 15:18:00.679714-06','2023-12-19 15:18:00.679714-06','www.amazon.com'),
+ (4543,'Travel Duffel Bag, Sports Tote Gym Bag, Shoulder Weekender Overnight Bag for Women',NULL,'B07YS438FV','https://m.media-amazon.com/images/I/71+g-qsSOsS._AC_UL320_.jpg',28701,4.7,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Travel-Duffel-Sports-Shoulder-pink8/dp/B07YS438FV/ref=sr_1_48?keywords=travel+accessories&qid=1703020679&sr=8-48',57,'2023-12-19 15:18:00.68561-06','2023-12-19 15:18:00.68561-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4515,'Airplane Pockets Airplane Tray Table Cover | Seat Back Organizer & Storage for Personal Items | Clean, Convenient, Expandable Pockets | Sanitary Travel Essentials for Flying | Media Pouch',NULL,'B07WCXP7CH','https://m.media-amazon.com/images/I/41OA6TuCShL._AC_UL320_.jpg',1228,4.6,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RFnpOi1begJYlPJ5dN-qofQAAAGMg_FQxQEAAAH2AQBvbm9fdHhuX2JpZDIgICBvbm9fdHhuX2ltcDEgICBdJoe4/https://www.amazon.com/Airplane-Pockets-Tray-Cover-Compartments/dp/B07WCXP7CH/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=travel+accessories&keywords=travel+accessories&pd_rd_i=B07WCXP7CH&pd_rd_r=fc81a4a3-ffbf-45bc-a40c-f7499dc39017&pd_rd_w=4R5vH&pd_rd_wg=BZfdF&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=EEX4P84285A70Z1M14Y4&qid=1703020679&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',57,'2023-12-19 15:18:00.519875-06','2023-12-19 15:18:00.691967-06','www.amazon.comhttps:'),
+ (4544,'TRODANCE Mini Jewelry Travel Case, Small, Portable Organizer Portable Display Storage Box For Rings Earrings Necklaces Gifts (Blue)',NULL,'B09631PYPT','https://m.media-amazon.com/images/I/61wNYT8kuKL._AC_UL320_.jpg',4884,4.5,'$7.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Organizer-Portable-Earrings-Necklaces-TRODANCE/dp/B09631PYPT/ref=sr_1_51?keywords=travel+accessories&qid=1703020679&sr=8-51',57,'2023-12-19 15:18:00.698733-06','2023-12-19 15:18:00.698733-06','www.amazon.com'),
+ (4545,'Compression Bags - Travel Accessories - 10 Pack Space Saver Bags - No Vacuum or Pump Needed - Vacuum Storage Bags for Travel Essentials - Home Packing-Organizers (Blue)',NULL,'B09MQJPXPG','https://m.media-amazon.com/images/I/617Y4QZta6L._AC_UL320_.jpg',1956,4.2,'$14.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Compression-Bags-Travel-Accessories-Packing-Organizers/dp/B09MQJPXPG/ref=sr_1_52?keywords=travel+accessories&qid=1703020679&sr=8-52',57,'2023-12-19 15:18:00.704661-06','2023-12-19 15:18:00.704661-06','www.amazon.com'),
+ (4546,'Perilogics Universal Airplane in Flight Phone Mount. Handsfree Phone Holder for Desk with Multi-Directional Dual 360 Degree Rotation. Pocket Size Travel Essential Accessory for Flying',NULL,'B09PLGHRJD','https://m.media-amazon.com/images/I/71g0YoOizBL._AC_UL320_.jpg',15913,4.5,'$13.97','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Universal-Handsfree-Multi-Directional-Rotation-Essential/dp/B09PLGHRJD/ref=sr_1_53?keywords=travel+accessories&qid=1703020679&sr=8-53',57,'2023-12-19 15:18:00.710528-06','2023-12-19 15:18:00.710528-06','www.amazon.com'),
+ (4547,'LISEN Tablet iPad Holder for Car Mount Headrest iPad Car Holder Back Seat Travel Accessories Car Tablet Holder Mount Road Trip Essentials for Kids Adults Fits All 4.7-12.9" Devices & Headrest Rod',NULL,'B09FDRGP6T','https://m.media-amazon.com/images/I/81f-svkg9jL._AC_UL320_.jpg',4977,4.6,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/LISEN-Headrest-Companion-Rotation-4-7-12-9/dp/B09FDRGP6T/ref=sr_1_55?keywords=travel+accessories&qid=1703020679&sr=8-55',57,'2023-12-19 15:18:00.716751-06','2023-12-19 15:18:00.716751-06','www.amazon.com'),
+ (4548,'Toiletry Bag for Men, Travel Essentials Travel Toiletry Bag, Water-Resistant Compact Bathroom Roll Organizer for Hygiene, Shaving kit, Gifts for men (5.Army Green(Polyster))',NULL,'B0B7RRL2BJ','https://m.media-amazon.com/images/I/81giHyDSRML._AC_UL320_.jpg',732,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Toiletry-Bag-Travel-Dopp-Kit-Organizer-Accessories/dp/B0B7RRL2BJ/ref=sr_1_57?keywords=travel+accessories&qid=1703020679&sr=8-57',57,'2023-12-19 15:18:00.722915-06','2023-12-19 15:18:00.722915-06','www.amazon.com'),
+ (4549,'Universal Travel Adapter, Redagod International Adaptor 4 USB A 1 USB C Ports, AC Power Plug Adapter All-in-one Travel Charger Outlet Converter for Europe UK AUS Asia Japan Covers 200+Countries',NULL,'B0BY85CTKG','https://m.media-amazon.com/images/I/61NklwYRSoL._AC_UL320_.jpg',866,4.8,'$18.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Universal-Redagod-International-Converter-Countries/dp/B0BY85CTKG/ref=sr_1_58?keywords=travel+accessories&qid=1703020679&sr=8-58',57,'2023-12-19 15:18:00.728372-06','2023-12-19 15:18:00.728372-06','www.amazon.com'),
+ (4550,'BEVA 4FT Travel Power Strip with USB C Ports, Non Surge Protector with Flat Plug Travel Extension Cord, 2 Outlets 3 USB Ports(1 USB C), Office Organizer Cruise Travel Essentials(Black 3.4A)',NULL,'B0BNDGSXS4','https://m.media-amazon.com/images/I/617vG87qwIL._AC_UL320_.jpg',1085,4.7,'$14.39','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Travel-Protector-Extension-Outlets-Essentials/dp/B0BNDGSXS4/ref=sr_1_59?keywords=travel+accessories&qid=1703020679&sr=8-59',57,'2023-12-19 15:18:00.734399-06','2023-12-19 15:18:00.734399-06','www.amazon.com'),
+ (4551,'12 Travel Compression Bags Vacuum Packing, Roll Up Space Saver Bags for Luggage, Cruise Ship Essentials (5 Large /5 Medium/2 Small Roll)',NULL,'B0BBGDFH4V','https://m.media-amazon.com/images/I/71W2tt9VPbL._AC_UL320_.jpg',52044,4.3,'$12.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/12-Travel-Compression-Packing-Essentials/dp/B0BBGDFH4V/ref=sr_1_60?keywords=travel+accessories&qid=1703020679&sr=8-60',57,'2023-12-19 15:18:00.740086-06','2023-12-19 15:18:00.740086-06','www.amazon.com'),
+ (4552,'So-Mine Commuter Essential Bag | Attaches to Airline Seat and Car Pocket | Travel Organizer | Slim Profile | 6 Pockets | 2 Cable Loops | 1 Zipper Pocket | Fits on Roller Bag Handle',NULL,'B082VDWNZS','https://aax-us-iad.amazon.com/e/loi/imp?b=JLxzjd4kMQlUciga0C7gc6wAAAGMg_FRIgEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICCvB1nU',616,4.3,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RLxzjd4kMQlUciga0C7gc6wAAAGMg_FQ3AEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICCvB1nU/https://www.amazon.com/Commuter-Essential-Organizer-Designed-Accessory/dp/B082VDWNZS/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b%3Aamzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&cv_ct_cx=travel+accessories&keywords=travel+accessories&pd_rd_i=B082VDWNZS&pd_rd_r=944dc33a-f8fc-4a97-9ed1-70b89681ca5e&pd_rd_w=L9WPm&pd_rd_wg=9QfUl&pf_rd_p=e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&pf_rd_r=EEX4P84285A70Z1M14Y4&qid=1703020679&sbo=EO%2BcdOgoisx3waG5xqcZQA%3D%3D&sr=1-1-a61ee601-6e56-4862-a8a2-1d3da5a5406f',57,'2023-12-19 15:18:00.745938-06','2023-12-19 15:18:00.745938-06','www.amazon.comhttps:');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4599,'Eueasy 300 LED Curtain Lights, 9.8ft x 9.8ft Fairy Lights with 8 Modes, String Hanging Lights, Remote Control, Perfect for Indoor/Outdoor Christmas, Wedding, Party Wall Decorations (Warm White)',NULL,'B0CB5Y12QL','https://m.media-amazon.com/images/I/71APWYstKRL._AC_UL320_.jpg',1861,4.4,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Eueasy-Curtain-Hanging-Christmas-Decorations/dp/B0CB5Y12QL/ref=sr_1_3?keywords=decoration&qid=1703020694&sr=8-3',58,'2023-12-19 15:18:16.067228-06','2023-12-19 15:18:16.067228-06','www.amazon.com'),
+ (4601,'RUBFAC 65pcs Yellow Latex Balloons, 12 Inches Helium Party Balloons with Ribbon for Wedding, Birthday, Graduation, Baby Shower, Bridal shower',NULL,'B0C9LVL9HH','https://m.media-amazon.com/images/I/619-4kIUgaL._AC_UL320_.jpg',504,4.7,'$5.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjkxMTc5MzM5NDIyNzE3OjE3MDMwMjA2OTQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDEwNDg4MjcxNDcwMjo6MDo6&url=%2FRUBFAC-Balloons-Wedding-Birthday-Graduation%2Fdp%2FB0C9LVL9HH%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddecoration%26keywords%3Ddecoration%26pd_rd_i%3DB0C9LVL9HH%26pd_rd_r%3D82fdd207-347f-4bd6-b48e-15af44e189fe%26pd_rd_w%3DIv4JE%26pd_rd_wg%3DkVq6v%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DX85J8G3W29EVBFJ47BSE%26qid%3D1703020694%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-1-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',58,'2023-12-19 15:18:16.080355-06','2023-12-19 15:18:16.080355-06','www.amazon.com'),
+ (4602,'Beistle Wall Decorations 4 Piece Vintage Halloween Party Supplies, 9", Black/Orange',NULL,'B00C69I85M','https://m.media-amazon.com/images/I/711rpXHEwOS._AC_UL320_.jpg',608,4.7,'$6.10','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjkxMTc5MzM5NDIyNzE3OjE3MDMwMjA2OTQ6c3Bfc2VhcmNoX3RoZW1hdGljOjMwMDAxMDg5OTMxOTYwMjo6Mjo6&url=%2FBeistle-4-Pack-Halloween-Cutouts-9-Inch%2Fdp%2FB00C69I85M%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddecoration%26keywords%3Ddecoration%26pd_rd_i%3DB00C69I85M%26pd_rd_r%3D82fdd207-347f-4bd6-b48e-15af44e189fe%26pd_rd_w%3DIv4JE%26pd_rd_wg%3DkVq6v%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DX85J8G3W29EVBFJ47BSE%26qid%3D1703020694%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-3-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',58,'2023-12-19 15:18:16.085902-06','2023-12-19 15:18:16.085902-06','www.amazon.com'),
+ (4600,'Beistle Green Shamrock Cutouts 10 Piece, St Patrick''s Day Decorations, Wall Silhouettes',NULL,'B005DUH7XU','https://m.media-amazon.com/images/I/51PScRXoXgL._AC_UL320_.jpg',236,4.6,'$4.21','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo1MjkxMTc5MzM5NDIyNzE3OjE3MDMwMjA2OTQ6c3Bfc2VhcmNoX3RoZW1hdGljOjIwMDE3OTY1Mjk2Mzc5ODo6Mzo6&url=%2FPkgd-Printed-Shamrock-Cutouts-Pkg%2Fdp%2FB005DUH7XU%2Fref%3Dsxin_14_pa_sp_search_thematic_sspa%3Fcontent-id%3Damzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%253Aamzn1.sym.d0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26cv_ct_cx%3Ddecoration%26keywords%3Ddecoration%26pd_rd_i%3DB005DUH7XU%26pd_rd_r%3D82fdd207-347f-4bd6-b48e-15af44e189fe%26pd_rd_w%3DIv4JE%26pd_rd_wg%3DkVq6v%26pf_rd_p%3Dd0d6e7d3-c9f1-480b-9f2a-893b95951bfb%26pf_rd_r%3DX85J8G3W29EVBFJ47BSE%26qid%3D1703020694%26sbo%3DRZvfv%252F%252FHxDF%252BO5021pAnSA%253D%253D%26sr%3D1-4-2c727eeb-987f-452f-86bd-c2978cc9d8b9-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9zZWFyY2hfdGhlbWF0aWM%26psc%3D1',58,'2023-12-19 15:18:16.07436-06','2023-12-19 15:18:16.092557-06','www.amazon.com'),
+ (4603,'SZELAM Digital Clock Large Display, LED Electric Alarm Clocks Mirror Surface for Makeup with Diming Mode, 3 Levels Brightness, Dual USB Ports Modern Decoration for Home Bedroom Decor-White',NULL,'B07P468RFV','https://m.media-amazon.com/images/I/61+GtiJ4XTL._AC_UL320_.jpg',29361,4.3,'$18.36','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Digital-Electric-Brightness-Decoration-Decor-White/dp/B07P468RFV/ref=sr_1_4?keywords=decoration&qid=1703020694&sr=8-4',58,'2023-12-19 15:18:16.099229-06','2023-12-19 15:18:16.099229-06','www.amazon.com'),
+ (4604,'Lulu Home Christmas Tabletop Decorations, 2 Packs Resin Golden & White Reindeer Lying Figurines, Xmas Holiday Winter Centerpieces Ornaments for Mantel Shelf Office Home Decor',NULL,'B0C6JTQMPP','https://m.media-amazon.com/images/I/81O+X8ykggL._AC_UL320_.jpg',17,4.9,'$12.59','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Lulu-Home-Christmas-Decorations-Centerpieces/dp/B0C6JTQMPP/ref=sr_1_5?keywords=decoration&qid=1703020694&sr=8-5',58,'2023-12-19 15:18:16.105611-06','2023-12-19 15:18:16.105611-06','www.amazon.com'),
+ (4605,'Rustic Wall Sconces Mason Jar Sconces Handmade Wall Art Hanging Design with Remote Control LED Fairy Lights and White Peony,Christmas Decor Gift Farmhouse Wall Home Decor Living Room Lights Set of Two',NULL,'B07SSLD42M','https://m.media-amazon.com/images/I/71ck3ge7PYL._AC_UL320_.jpg',20210,4.4,'$36.96','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Sconces-Handmade-Hanging-Farmhouse-Decorations/dp/B07SSLD42M/ref=sr_1_6?keywords=decoration&qid=1703020694&sr=8-6',58,'2023-12-19 15:18:16.112086-06','2023-12-19 15:18:16.112086-06','www.amazon.com'),
+ (4606,'2 Packs Artificial Hanging Plants with Lights, 3.4 Feet Fake Hanging Plant with Basket, Ivy Vine Fake Leaves LED Copper Wire Lights for Cafe Wall Home Garden Porch Wedding Garland Outside Decoration',NULL,'B0BX8BQ828','https://m.media-amazon.com/images/I/81GaZWFqC7L._AC_UL320_.jpg',138,4.3,'$21.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Artificial-Hanging-Wedding-Garland-Decoration/dp/B0BX8BQ828/ref=sr_1_7?keywords=decoration&qid=1703020694&sr=8-7',58,'2023-12-19 15:18:16.118724-06','2023-12-19 15:18:16.118724-06','www.amazon.com'),
+ (4607,'GOER 3.2 ft x 9.8 ft Metallic Tinsel Foil Fringe Curtains Party Photo Backdrop Party Streamers for Birthday,Graduation,New Year Eve Decorations Wedding Decor (1 Pack, Gold)',NULL,'B01J9FWFC2','https://m.media-amazon.com/images/I/81lkHyd6DoL._AC_UL320_.jpg',41555,4.5,'$6.49','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/GOER-711176740583-Foil-Fringe-Curtains/dp/B01J9FWFC2/ref=sr_1_8?keywords=decoration&qid=1703020694&sr=8-8',58,'2023-12-19 15:18:16.125524-06','2023-12-19 15:18:16.125524-06','www.amazon.com'),
+ (4608,'Yatim 78-Ft 12 Pack Silk Artificial Ivy Vines Leaf Garland Plants Hanging Wedding Garland Fake Foliage Flowers Home Kitchen Garden Office Wedding Wall Decor',NULL,'B01CL1R88W','https://m.media-amazon.com/images/I/912OWI9P4NL._AC_UL320_.jpg',12994,4.4,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Yatim-Artificial-Garland-Hanging-Wedding/dp/B01CL1R88W/ref=sr_1_9?keywords=decoration&qid=1703020694&sr=8-9',58,'2023-12-19 15:18:16.1321-06','2023-12-19 15:18:16.1321-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4609,'Solar Lights for Outside 2 Pack, New Upgraded Solar Garden Lights, Solar Lights Outdoor Waterproof for Garden Decor, Outdoor Solar Lights for Patio Yard Decor, Firefly Garden Lights Solar, Warm White',NULL,'B0BHQT8YJY','https://aax-us-iad.amazon.com/e/loi/imp?b=JPbeSE6Qy2gnm5RbeiO7ebEAAAGMg_GN9gEAAAH2AQBvbm9fdHhuX2JpZDIgICBvbm9fdHhuX2ltcDEgICCr6MNv',1431,4.3,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RPbeSE6Qy2gnm5RbeiO7ebEAAAGMg_GNtQEAAAH2AQBvbm9fdHhuX2JpZDIgICBvbm9fdHhuX2ltcDEgICCr6MNv/https://www.amazon.com/Firefly-Outdoor-Waterproof-Starburst-Swaying/dp/B0BHQT8YJY/ref=sxin_23_sbv_search_btf?content-id=amzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59%3Aamzn1.sym.6ca944f8-539c-499e-a3a4-26a566d1de59&cv_ct_cx=decoration&keywords=decoration&pd_rd_i=B0BHQT8YJY&pd_rd_r=82fdd207-347f-4bd6-b48e-15af44e189fe&pd_rd_w=86RY9&pd_rd_wg=kVq6v&pf_rd_p=6ca944f8-539c-499e-a3a4-26a566d1de59&pf_rd_r=X85J8G3W29EVBFJ47BSE&qid=1703020694&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-5190daf0-67e3-427c-bea6-c72c1df98776',58,'2023-12-19 15:18:16.138811-06','2023-12-19 15:18:16.138811-06','www.amazon.comhttps:'),
+ (4610,'Dazzle Bright Curtain String Lights, 300 LED 9.8ft x 9.8ft 8 Lighting Modes Fairy Lights USB Powered, Waterproof Lights for Christmas Party Wedding Outdoor Indoor Wall Decorations (White)',NULL,'B092QR6C1Y','https://m.media-amazon.com/images/I/71KsNLXaTZS._AC_UL320_.jpg',3716,4.3,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dazzle-Bright-Waterproof-Christmas-Decorations/dp/B092QR6C1Y/ref=sr_1_11?keywords=decoration&qid=1703020694&sr=8-11',58,'2023-12-19 15:18:16.145059-06','2023-12-19 15:18:16.145059-06','www.amazon.com'),
+ (4611,'Twinkle Star Copper String Lights Fairy String Lights 8 Modes LED String Lights USB Powered with Remote Control for Christmas Tree Wedding Party Home Decoration (Warm White with Remote, 66ft)',NULL,'B087CWJKFF','https://m.media-amazon.com/images/I/81NOvZdps2L._AC_UL320_.jpg',35387,4.5,'$10.66','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Twinkle-Star-Firefly-Christmas-Decorations/dp/B087CWJKFF/ref=sr_1_12?keywords=decoration&qid=1703020694&sr=8-12',58,'2023-12-19 15:18:16.151799-06','2023-12-19 15:18:16.151799-06','www.amazon.com'),
+ (4320,'Twinkle Star 1.8FT Lighted Pop Up Christmas Penguin Decorations, Pre-Lit Light Up 50 LED Warm White Lights, Collapsible Easily Metal Stand Easy-Assembly Reusable for Holiday Xmas Indoor Outdoor Decor',NULL,'B0C73FFLKV','https://m.media-amazon.com/images/I/71SZEWvbKuL._AC_UL320_.jpg',723,4.2,'$24.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Twinkle-Star-Christmas-Penguin-Decorations/dp/B0C73FFLKV/ref=sr_1_50?keywords=outdoor&qid=1703020517&sr=8-50',55,'2023-12-19 15:15:18.809235-06','2023-12-19 15:18:16.158007-06','www.amazon.com'),
+ (4612,'OuMuaMua 15pcs Winter Christmas Hanging Snowflake Decorations, 3D Holographic Snowflakes for Christmas Winter Wonderland Decorations Frozen Birthday New Year Party Home Decorations',NULL,'B098NN2HQP','https://m.media-amazon.com/images/I/8145FCDbKRL._AC_UL320_.jpg',4014,4.3,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Decorations-Holographic-Snowflakes-Wonderland/dp/B098NN2HQP/ref=sr_1_14?keywords=decoration&qid=1703020694&sr=8-14',58,'2023-12-19 15:18:16.164409-06','2023-12-19 15:18:16.164409-06','www.amazon.com'),
+ (4613,'Dried Pampas Grass Decor, 100 PCS Pampas Grass Contains Bunny Tails Dried Flowers, Reed Grass Bouquet for Wedding Boho Flowers Home Table Decor, Rustic Farmhouse Party (White and Brown)',NULL,'B09H5JZC97','https://m.media-amazon.com/images/I/7173mks7XtL._AC_UL320_.jpg',5437,4.6,'$13.98','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Contains-Flowers-Bouquet-Wedding-Farmhouse/dp/B09H5JZC97/ref=sr_1_15?keywords=decoration&qid=1703020694&sr=8-15',58,'2023-12-19 15:18:16.170774-06','2023-12-19 15:18:16.170774-06','www.amazon.com'),
+ (4614,'SAOROPEB 3D Butterfly Wall Decor 48 Pcs 4 Styles 3 Sizes, Gold Butterfly Decorations for Butterfly Birthday Decorations Butterfly Party Decorations Cake Decorations, Removable Stickers (Gold)',NULL,'B095P43V29','https://m.media-amazon.com/images/I/81ryUOLchIS._AC_UL320_.jpg',13346,4.6,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Butterfly-Stickers-Removable-Decoration-Classroom/dp/B095P43V29/ref=sr_1_16?keywords=decoration&qid=1703020694&sr=8-16',58,'2023-12-19 15:18:16.177076-06','2023-12-19 15:18:16.177076-06','www.amazon.com'),
+ (4615,'Sonicism 12 Pack Pyramid Sound Proof Foam Panels with Self-Adhesive, 12" X 12" X 2" Acoustic Foam Panels of High Density, Soundproof Wall Panels Fast Expand, Sound Absorption and Decoration (Black)',NULL,'B0BRTVW9LC','https://m.media-amazon.com/images/I/81U1sV-CP6L._AC_UL320_.jpg',503,4.3,'$28.79','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjoyMDAxMzA5MDYyOTkyOTg6OjA6Og&url=%2FSonicism-Self-Adhesive-Soundproof-Absorption-Decoration%2Fdp%2FB0BRTVW9LC%2Fref%3Dsr_1_17_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-17-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.184235-06','2023-12-19 15:18:16.184235-06','www.amazon.com'),
+ (4616,'kakoya Flameless LED Candles with Timer 5 Pc Flickering Flameless Candles for Romantic Ambiance and Home Decoration Durable Acrylic Shell,with Embedded Star String,Battery Operated Candles(Red)',NULL,'B0C45GLB2H','https://m.media-amazon.com/images/I/61J4ODuDxbL._AC_UL320_.jpg',540,4.3,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjozMDAxMDE1NDIyMTExMDI6OjA6Og&url=%2Fkakoya-Flickering-Decoration-String%25EF%25BC%258CBattery-Candles%25EF%25BC%2588Red%25EF%25BC%2589%2Fdp%2FB0C45GLB2H%2Fref%3Dsr_1_18_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-18-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.191007-06','2023-12-19 15:18:16.191007-06','www.amazon.com'),
+ (4617,'Solar Lanterns Outdoor Hanging Lantern Lights,Sun Moon Metal Decor Lanterns-Waterproof LED Decorative Light for Garden Patio Yard Lawn Backyard Front Porch as Gifts for Mom Grandma Women',NULL,'B0C2H87XPX','https://m.media-amazon.com/images/I/81Ryv6i+9KL._AC_UL320_.jpg',1462,4.4,'$29.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjozMDAxMDM2OTkyOTk3MDI6OjA6Og&url=%2FLanterns-Outdoor-Lanterns-Waterproof-Decorative-Backyard%2Fdp%2FB0C2H87XPX%2Fref%3Dsr_1_19_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-19-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.197504-06','2023-12-19 15:18:16.197504-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4618,'AWQ 200 LED 66 FT Copper Wire String Lights 8 Modes LED Fairy String Lights USB Powered with Remote Control for Christmas Tree Wedding Party Home Decoration',NULL,'B08B5YQ77B','https://m.media-amazon.com/images/I/81Jt8m7tT-L._AC_UL320_.jpg',120,4.4,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjoyMDAwMzI1NDI3OTY5NzE6OjA6Og&url=%2FAWQ-Powered-Control-Christmas-Decoration%2Fdp%2FB08B5YQ77B%2Fref%3Dsr_1_20_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-20-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.204203-06','2023-12-19 15:18:16.204203-06','www.amazon.com'),
+ (4619,'110 PCS Dried Pampas Grass Bouquet, Boho Table Decor, Bunny Tails Dried Flowers, Brown Pompas, White Pampas Grass for Wedding, Home, Rustic Party, Baby Shower Decorations',NULL,'B0B1975JYZ','https://m.media-amazon.com/images/I/719aYPPyi6L._AC_UL320_.jpg',1553,4.6,'$15.48','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Pampas-Bouquet-Flowers-Wedding-Decorations/dp/B0B1975JYZ/ref=sr_1_21?keywords=decoration&qid=1703020694&sr=8-21',58,'2023-12-19 15:18:16.211019-06','2023-12-19 15:18:16.211019-06','www.amazon.com'),
+ (4620,'Twinkle Star 300 LED Window Curtain String Lights Wedding Party Home Garden Bedroom Outdoor Indoor Wall Decorations, Warm White',NULL,'B01LLSNG1E','https://m.media-amazon.com/images/I/81SeihZDOGL._AC_UL320_.jpg',96892,4.6,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Twinkle-Window-Curtain-String-Light/dp/B01LLSNG1E/ref=sr_1_22?keywords=decoration&qid=1703020694&sr=8-22',58,'2023-12-19 15:18:16.216917-06','2023-12-19 15:18:16.216917-06','www.amazon.com'),
+ (4621,'JMEXSUSS 300 LED Remote Control Christmas Curtain Lights, Plug in Fairy Curtain Lights Outdoor, Window Wall Hanging Curtain String Lights for Bedroom Backdrop Wedding Party Indoor Decor, Warm White',NULL,'B07CJ2V1LR','https://m.media-amazon.com/images/I/81zc2fRn1pL._AC_UL320_.jpg',11079,4.6,'$20.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/JMEXSUSS-Decorative-Linkable-Christmas-Birthday/dp/B07CJ2V1LR/ref=sr_1_24?keywords=decoration&qid=1703020694&sr=8-24',58,'2023-12-19 15:18:16.224274-06','2023-12-19 15:18:16.224274-06','www.amazon.com'),
+ (4622,'CWLWGO-Ceramic Matte Vase for Home Decor, Modern and Minimalist Decorative Vase Set. Farmhouse Living Room Tabletop, Bookshelf Decoration, Centerpiece Table Decor,Boho Decor.(Matte Multi)',NULL,'B09Q2CR55L','https://m.media-amazon.com/images/I/51qq7qPvKhL._AC_UL320_.jpg',745,4.7,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjoyMDAwNDAxNDc1NjYyOTg6OjA6Og&url=%2FCeramic-CwlwGO-Decorative-Kitchen-Decor-%25EF%25BC%2588Multicolor%25EF%25BC%2589%2Fdp%2FB09Q2CR55L%2Fref%3Dsr_1_25_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-25-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.231613-06','2023-12-19 15:18:16.231613-06','www.amazon.com'),
+ (4623,'AWQ 12 Stars 138 LEDs Fairy Lights Star String Lights Star Curtain Lights 8 Modes for Christmas Wedding Home Garden Bedroom Indoor Outdoor',NULL,'B08GP72CS2','https://m.media-amazon.com/images/I/81ft8EZH8DL._AC_UL320_.jpg',47,4.3,'$17.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjoyMDAwMzk0MDc3ODY5NzE6OjA6Og&url=%2FAWQ-Curtain-Christmas-Wedding-Bedroom%2Fdp%2FB08GP72CS2%2Fref%3Dsr_1_26_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-26-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.238945-06','2023-12-19 15:18:16.238945-06','www.amazon.com'),
+ (4624,'Hisow Orchids Artificial Flowers, 15" Faux Orchid in Gold Flower Pot Real Touch Flowers in Pot Large Flower Arrangements Artificial Centerpiece for Home Living Room Bathroom Kitchen Decoration (White)',NULL,'B09ZL8WDYN','https://m.media-amazon.com/images/I/716Uoy1Gq8L._AC_UL320_.jpg',102,3.9,'$32.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjozMDAwMTAwNjcxNDEyMDI6OjA6Og&url=%2FHisow-Artificial-Arrangements-Centerpiece-Decoration%2Fdp%2FB09ZL8WDYN%2Fref%3Dsr_1_27_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-27-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.245647-06','2023-12-19 15:18:16.245647-06','www.amazon.com'),
+ (4625,'YL Crafts - Resin Rhino Head Sculpture Animal Wall Decoration (Red)',NULL,'B01KQ46JNG','https://m.media-amazon.com/images/I/41U5Te4qc4L._AC_UL320_.jpg',3,3.2,'$74.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjoyMDAxMjYwMTMxNTYxOTg6OjA6Og&url=%2FYL-Crafts-Resin-Sculpture-Animal%2Fdp%2FB01KQ46JNG%2Fref%3Dsr_1_28_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-28-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.252011-06','2023-12-19 15:18:16.252011-06','www.amazon.com'),
+ (4626,'yinupet 48 Pieces Christams Party Hanging Swirl Set Decorations Xmas Hanging Swirl for Home Birthday Party Supplies',NULL,'B0CG5GTX3Z','https://m.media-amazon.com/images/I/81ks4V5mSiL._AC_UL320_.jpg',2,5.0,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/yinupet-Christams-Decorations-Birthday-Supplies/dp/B0CG5GTX3Z/ref=sr_1_29?keywords=decoration&qid=1703020694&sr=8-29',58,'2023-12-19 15:18:16.259433-06','2023-12-19 15:18:16.259433-06','www.amazon.com'),
+ (4627,'Winter Tiered Tray Decor Set Snowflake Snowman Gnome Wood Sign Beaded Garland Christmas Tier Tray Bundle Rustic Home Table Decoration Wooden Plaque for Shelf Kitchen Tabletop (Grey Snowflake Gnome)',NULL,'B0CLFZ9S51','https://m.media-amazon.com/images/I/81dPqAgw7uL._AC_UL320_.jpg',7,4.2,'$11.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Snowflake-Snowman-Christmas-Decoration-Tabletop/dp/B0CLFZ9S51/ref=sr_1_31?keywords=decoration&qid=1703020694&sr=8-31',58,'2023-12-19 15:18:16.265884-06','2023-12-19 15:18:16.265884-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4628,'NURADA Flickering Flameless Candles: Acrylic LED Pillar Candles Battery Operated with Remote and Timer Imitation Glass Candle for Home Table Bathroom Decor, Gray, Pack of 5 (D 3"×H 4" 5" 6" 8" 8")',NULL,'B0BFX4SC26','https://m.media-amazon.com/images/I/71xeRyRR20L._AC_UL320_.jpg',386,4.6,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjozMDAwODk0NzkzNTg0MDI6OjA6Og&url=%2FNURADA-Flickering-Flameless-Candles-Imitation%2Fdp%2FB0BFX4SC26%2Fref%3Dsr_1_34_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-34-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.273519-06','2023-12-19 15:18:16.273519-06','www.amazon.com'),
+ (4629,'HMASYO 12Pcs Large 3D Butterfly Party Decorations with Pearls - 12inch 2 Layer Big Paper Butterflies Set Comes in 2 Sizes Giant Butterfly Wall Decor for Birthday, Baby Shower, Nursery, Wedding',NULL,'B0C26SKHSB','https://m.media-amazon.com/images/I/61L3NxeWiBL._AC_UL320_.jpg',40,4.6,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjoyMDAxNzE2MzgxMjQyOTg6OjA6Og&url=%2FHMASYO-12Pcs-Butterfly-Decorations-Pearls%2Fdp%2FB0C26SKHSB%2Fref%3Dsr_1_35_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-35-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.280551-06','2023-12-19 15:18:16.280551-06','www.amazon.com'),
+ (4630,'Wokceer Sequin Shimmer Wall Backdrop 24 Panels Rainbow Square Sequin Backdrops for Party Decorations Birthday Wedding & Engagement Anniversary Iridescent Home Decor',NULL,'B0B1JGWD8C','https://m.media-amazon.com/images/I/71PcM0qrwuL._AC_UL320_.jpg',65,4.7,'$89.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo3NTYyMDU3NTU5NDcxNzoxNzAzMDIwNjk0OnNwX210ZjozMDAwNjcxNTIxNzI1MDI6OjA6Og&url=%2FBackdrops-Decorations-Engagement-Anniversary-Iridescent%2Fdp%2FB0B1JGWD8C%2Fref%3Dsr_1_36_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020694%26sr%3D8-36-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:16.287069-06','2023-12-19 15:18:16.287069-06','www.amazon.com'),
+ (4631,'Liliful 15 Pcs Velvet Christmas Balls Bulk Flocked Christmas Tree Ball Ornaments Plastic Balls Xmas Decorative Hanging Ornaments Christmas Tree Decoration (Brown, Green, Beige,1.57 Inch)',NULL,'B0CKPK8T6F','https://m.media-amazon.com/images/I/914wrauLPfL._AC_UL320_.jpg',81,3.4,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Liliful-Christmas-Ornaments-Decorative-Decoration/dp/B0CKPK8T6F/ref=sr_1_38?keywords=decoration&qid=1703020694&sr=8-38',58,'2023-12-19 15:18:16.293893-06','2023-12-19 15:18:16.293893-06','www.amazon.com'),
+ (4632,'Christmas Window Lights Decorations, 5 pcs LED Lighted Christmas Hanging Lights Santa Claus Xmas Tree Bell Snowman Shaped Battery Operated with Suction Cup Hook for Fireplace Window Indoor Decor',NULL,'B0CB1DFXZF','https://m.media-amazon.com/images/I/812eUiSIRZL._AC_UL320_.jpg',910,4.4,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Decorations-Lighted-Operated-Fireplace/dp/B0CB1DFXZF/ref=sr_1_42?keywords=decoration&qid=1703020694&sr=8-42',58,'2023-12-19 15:18:16.300042-06','2023-12-19 15:18:16.300042-06','www.amazon.com'),
+ (4633,'Homedics Tabletop Water Fountain, Home Décor Soothing Sound Machine - Automatic Pump, Deep Basin & Natural River Rocks. Indoor Zen Relaxation for Office, Living Room, or Bedroom, 8.25” Tall',NULL,'B000QTUJXS','https://m.media-amazon.com/images/I/815vZaQ9FXL._AC_UL320_.jpg',40167,4.2,'$40.28','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Homedics-Tabletop-Water-Fountain-Soothing/dp/B000QTUJXS/ref=sr_1_44?keywords=decoration&qid=1703020694&sr=8-44',58,'2023-12-19 15:18:16.306755-06','2023-12-19 15:18:16.306755-06','www.amazon.com'),
+ (4634,'White Ceramic Vase, Modern Vase for Minimalist Decor, Hollow Round Matte Pampas Flower Vases for Boho Home Wedding Party Room Dinner Table Shelf Decor (2pcs)',NULL,'B0BG2NLBMJ','https://m.media-amazon.com/images/I/619i5WhWjNL._AC_UL320_.jpg',685,4.8,'$24.78','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Ceramic-Modern-Minimalist-Hollow-Wedding/dp/B0BG2NLBMJ/ref=sr_1_45?keywords=decoration&qid=1703020694&sr=8-45',58,'2023-12-19 15:18:16.31432-06','2023-12-19 15:18:16.31432-06','www.amazon.com'),
+ (4635,'ENVEN 108Pcs Merry Christmas Party Decorations Kit - Merry Christmas Banner - MERRY CHRISTMAS Banner, Christmas Hanging Swirls, Christmas Balloons, Christmas Cupcake Toppers, Christmas Stickers for Kids Merry Christmas Decorations Party Supplies',NULL,'B0CB6Q5NSN','https://m.media-amazon.com/images/I/81FndrYew2L._AC_UL320_.jpg',4,5.0,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ENVEN-108Pcs-Merry-Christmas-Decorations/dp/B0CB6Q5NSN/ref=sr_1_49?keywords=decoration&qid=1703020694&sr=8-49',58,'2023-12-19 15:18:16.320824-06','2023-12-19 15:18:16.320824-06','www.amazon.com'),
+ (4340,'UBTKEY Outdoor Christmas Decorations, Decorative Ladder Lights with Climbing Santa Claus on Ladder for Christmas Outside Window Yard Tree Decorations (10ft, Warm White)',NULL,'B0CB8T85NW','https://m.media-amazon.com/images/I/8131QIZbYAL._AC_UL320_.jpg',15,4.4,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/UBTKEY-Christmas-Decorations-Decorative-Climbing/dp/B0CB8T85NW/ref=sr_1_57?keywords=outdoor&qid=1703020524&sr=8-57',55,'2023-12-19 15:15:25.426085-06','2023-12-19 15:18:16.327671-06','www.amazon.com'),
+ (4636,'Paersion 2PCS Christmas Gnome Plush Decorations with Xmas Tree and Gift, Handmade Swedish Tomte Santa Christmas Home Tabletop Elf Gnomes Decor Christmas Decorations Ornaments',NULL,'B0CGPL258V','https://m.media-amazon.com/images/I/71pqHuxJGZL._AC_UL320_.jpg',13,4.8,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Paersion-Christmas-Decorations-Handmade-Ornaments/dp/B0CGPL258V/ref=sr_1_55?keywords=decoration&qid=1703020694&sr=8-55',58,'2023-12-19 15:18:16.333815-06','2023-12-19 15:18:16.333815-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4637,'30Pcs Mini Christmas Trees Artificial Christmas Tree Bottle Brush Trees with Wooden Base for Christmas Decor Christmas Party Home Table Craft Decorations(Green+Silver+White)',NULL,'B0C7QZPGWJ','https://m.media-amazon.com/images/I/81i3daU5ofL._AC_UL320_.jpg',888,4.3,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Artificial-Bottle-Wooden-Decorations/dp/B0C7QZPGWJ/ref=sr_1_56?keywords=decoration&qid=1703020694&sr=8-56',58,'2023-12-19 15:18:16.342757-06','2023-12-19 15:18:16.342757-06','www.amazon.com'),
+ (4638,'Best Choice Products 3-Piece Large Lighted Christmas Deer Family Set 5Ft Outdoor Yard Decoration with 360 LED Lights, Stakes, Zip Ties - Gold',NULL,'B08L49GJCF','https://m.media-amazon.com/images/I/811d1gxBqiL._AC_UL320_.jpg',2323,4.5,'$149.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Best-Choice-Products-Christmas-Decoration/dp/B08L49GJCF/ref=sr_1_59?keywords=decoration&qid=1703020694&sr=8-59',58,'2023-12-19 15:18:16.350346-06','2023-12-19 15:18:16.350346-06','www.amazon.com'),
+ (4640,'Ratuor Peacock Statue Garden Decor Metal Peacock Yard Art Decorations Outdoor Sculpture Patio Lawn Ornament,Set of 2',NULL,'B0B99WSQ3M','https://m.media-amazon.com/images/I/81QI3URoILL._AC_UL320_.jpg',32,4.6,'$69.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfYXRmX25leHQ6MjAwMDkzMTMxMDEzMzk4OjowOjo&url=%2FPeacock-Decorations-Outdoor-Sculpture-Ornament%2Fdp%2FB0B99WSQ3M%2Fref%3Dsr_1_49_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-49-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',58,'2023-12-19 15:18:22.793014-06','2023-12-19 15:18:22.793014-06','www.amazon.com'),
+ (4641,'Leekung African Statue for Home Decoration,African Statues and Sculptures Table top Bookshelf Decor,African Lady Figurines Home Decor Antique Woodstone Color',NULL,'B0912RXYVY','https://m.media-amazon.com/images/I/71d5n19XXdS._AC_UL320_.jpg',346,4.7,'$31.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfYXRmX25leHQ6MjAwMDYzNTU3NjUwMTUxOjowOjo&url=%2FLeekung-Decoration-Sculptures-Bookshelf-Figurines%2Fdp%2FB0912RXYVY%2Fref%3Dsr_1_50_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-50-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',58,'2023-12-19 15:18:22.811128-06','2023-12-19 15:18:22.811128-06','www.amazon.com'),
+ (4642,'Leekung African Statues and Sculptures for Home Decor,African Figurines Head Statue Decorations for Home,African Art Sculptures Woman Statue Decor for Living Room Antique Black Color',NULL,'B08T7HDXR3','https://m.media-amazon.com/images/I/81m6AfUMN-S._AC_UL320_.jpg',366,4.6,'$34.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfYXRmX25leHQ6MjAwMTc4NzQwNTczMjk4OjowOjo&url=%2FLeekung-African-Sculptures-Figurines-Decorations%2Fdp%2FB08T7HDXR3%2Fref%3Dsr_1_51_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-51-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',58,'2023-12-19 15:18:22.818466-06','2023-12-19 15:18:22.818466-06','www.amazon.com'),
+ (4643,'ARKENY Valentines Day Table Runner 13x72 Inches, Heart Love Seasonal Farmhouse Burlap Red Buffalo Plaid Indoor Kitchen Dining Table Decorations for Home Party AT342-72',NULL,'B0BL38C42K','https://m.media-amazon.com/images/I/815TqMnB9KL._AC_UL320_.jpg',60,4.6,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfYXRmX25leHQ6MzAwMDk4MjAwMzY2OTAyOjowOjo&url=%2FARKENY-Valentines-Decorations-Farmhouse-Gathering%2Fdp%2FB0BL38C42K%2Fref%3Dsr_1_52_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-52-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGZfbmV4dA%26psc%3D1',58,'2023-12-19 15:18:22.825513-06','2023-12-19 15:18:22.825513-06','www.amazon.com'),
+ (4644,'52Ft White and Gold Heart Garland Hanging Love Heart Streamer Banner for Anniversary Bachelorette Valentines Day Mothers Fathers Day Engagement Wedding Bridal Shower Birthday Party Decoration Supplies',NULL,'B092L9NC97','https://m.media-amazon.com/images/I/81QLJVv+XgL._AC_UL320_.jpg',596,4.6,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Anniversary-Bachelorette-Engagement-Valentines-Decorations/dp/B092L9NC97/ref=sr_1_53?keywords=decoration&qid=1703020701&sr=8-53',58,'2023-12-19 15:18:22.832146-06','2023-12-19 15:18:22.832146-06','www.amazon.com'),
+ (4645,'Liliful 30 Pcs Christmas Candy Ornament Set Plastic Peppermint Candy Cane Christmas Decorations Christmas Candy Lollipop Ornament Xmas Hanging Lollipop Pattern Decorations with Rope (Red White)',NULL,'B0CFKDSC7G','https://m.media-amazon.com/images/I/819K37hwErL._AC_UL320_.jpg',20,4.2,'$23.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Liliful-Christmas-Ornament-Peppermint-Decorations/dp/B0CFKDSC7G/ref=sr_1_55?keywords=decoration&qid=1703020701&sr=8-55',58,'2023-12-19 15:18:22.839855-06','2023-12-19 15:18:22.839855-06','www.amazon.com'),
+ (4646,'MEHOFOND 7x5ft Merry Christmas Backdrop Ugly Sweater Party Photography Background Xmas Black Sweater Red and Green Snowflake Party Banner Decorations Photo Booth Props',NULL,'B0CC96NC93','https://m.media-amazon.com/images/I/71f4K9t7HOL._AC_UL320_.jpg',6,5.0,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/MEHOFOND-Christmas-Photography-Background-Decorations/dp/B0CC96NC93/ref=sr_1_56?keywords=decoration&qid=1703020701&sr=8-56',58,'2023-12-19 15:18:22.846802-06','2023-12-19 15:18:22.846802-06','www.amazon.com'),
+ (4647,'Sound Activated Party Lights with Remote Control Dj Lighting, Disco Ball Strobe Lamp 7 Modes Stage Light for Home Room Dance Parties Birthday Halloween Christmas Decorations Stocking Stuffers',NULL,'B06WVB8P3B','https://m.media-amazon.com/images/I/71G4t-Vi4cL._AC_UL320_.jpg',39712,4.5,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Activated-Control-Lighting-Parties-Birthday/dp/B06WVB8P3B/ref=sr_1_57?keywords=decoration&qid=1703020701&sr=8-57',58,'2023-12-19 15:18:22.852873-06','2023-12-19 15:18:22.852873-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4648,'ALLYORS 6 PCS Christmas Silverware Holder, Christmas Dinner Table Decorations, Xmas Party Dinner Table Dinnerware Decorations Supplies Flatware Decor',NULL,'B0C5X1QD2Q','https://m.media-amazon.com/images/I/71-II2WJEtL._AC_UL320_.jpg',31,4.7,'$5.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/ALLYORS-Christmas-Silverware-Decorations-Dinnerware/dp/B0C5X1QD2Q/ref=sr_1_59?keywords=decoration&qid=1703020701&sr=8-59',58,'2023-12-19 15:18:22.86023-06','2023-12-19 15:18:22.86023-06','www.amazon.com'),
+ (4649,'PEIDUO Christmas Decorations, 2FT Birch Tree with LED Lights, Warm White Light up Tree Lamp, Fairy Light Spirit Tree for Xmas Indoor Home Table Fireplace Decor, Battery Powered, 6H/18H Timer (2PK)',NULL,'B07X7H7C7V','https://m.media-amazon.com/images/I/815J6iwv5gL._AC_UL320_.jpg',3935,4.5,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Padoo-Battery-Powered-Decoration-Wedding/dp/B07X7H7C7V/ref=sr_1_63?keywords=decoration&qid=1703020701&sr=8-63',58,'2023-12-19 15:18:22.871177-06','2023-12-19 15:18:22.871177-06','www.amazon.com'),
+ (4651,'80s 90s 50s Party Decorations 80''s 90''s 50''s Party Bundle Includes Inflatable Radio Boombox and Mobile Phone, Back to 80s 90s 50s Backdrop, Tablecloth, 75 Pcs Balloons for Hip Hop Party (80s Style)',NULL,'B09BVV2SFF','https://m.media-amazon.com/images/I/91J+0xLW79L._AC_UL320_.jpg',968,4.6,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfbXRmOjIwMDEzNDM2NzQ1ODE5ODo6MDo6&url=%2FDecorations-Inflatable-Backdrop-Tablecloth-Balloons%2Fdp%2FB09BVV2SFF%2Fref%3Dsr_1_66_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-66-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:22.885553-06','2023-12-19 15:18:22.885553-06','www.amazon.com'),
+ (4652,'Leekung Buddha Statue for Home Decor,Buddah Statute Zen Decoration,Meditation Buddha Decor Brown 7 inch',NULL,'B09FLNGFPP','https://m.media-amazon.com/images/I/71SH6xVdy5L._AC_UL320_.jpg',570,4.7,'$19.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfbXRmOjIwMDA5MjI5NzE0MDE1MTo6MDo6&url=%2FLeekung-Buddah-Statute-Buddha-Statue%2Fdp%2FB09FLNGFPP%2Fref%3Dsr_1_68_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-68-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:22.892998-06','2023-12-19 15:18:22.892998-06','www.amazon.com'),
+ (4653,'YJ Fake Flowers with Vase, Silk Roses Artificial Flowers in Vase, Faux Flower Arrangement with Vase Suitable for Home Office Decoration, Dining Table Centerpiece(White)',NULL,'B093DDBMT5','https://m.media-amazon.com/images/I/71T5o5Lq8yL._AC_UL320_.jpg',1985,4.5,'$26.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Flowers-Artificial-Arrangement-Suitable-Decoration/dp/B093DDBMT5/ref=sr_1_70?keywords=decoration&qid=1703020701&sr=8-70',58,'2023-12-19 15:18:22.899273-06','2023-12-19 15:18:22.899273-06','www.amazon.com'),
+ (4654,'Iridescent Star Moon Circle Dot Garland Party Decoration Kit Hanging Crescent and Twinkle Little Star Streamer Bunting Banner for Kids First Birthday Ramadan EID Mubarak Baby Shower Wedding Decor',NULL,'B09223S6ZX','https://m.media-amazon.com/images/I/81e3JRzN2dS._AC_UL320_.jpg',2060,4.6,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Iridescent-Decoration-Crescent-Streamer-Birthday/dp/B09223S6ZX/ref=sr_1_72?keywords=decoration&qid=1703020701&sr=8-72',58,'2023-12-19 15:18:22.906126-06','2023-12-19 15:18:22.906126-06','www.amazon.com'),
+ (4655,'Pooqla LED Marquee Letter Lights Golden, Light Up Glitter Letter Sign Night Light for Girls Gifts Birthday Wedding Bedroom Christmas Party Decoration, Gold Y',NULL,'B0C46BPJ1R','https://m.media-amazon.com/images/I/71LzXCIlIfL._AC_UL320_.jpg',24,4.5,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfbXRmOjMwMDAwMjA3NzcwMTYwMjo6MDo6&url=%2FPooqla-Marquee-Birthday-Christmas-Decoration%2Fdp%2FB0C46BPJ1R%2Fref%3Dsr_1_73_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-73-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:22.912543-06','2023-12-19 15:18:22.912543-06','www.amazon.com'),
+ (4656,'Norcalway Rose in Glass Dome Beauty and The Beast Rose - Rose in a Glass Mom Gifts Birthday Gifts Wedding Anniversary Decorations - Glass Rose | Rose with Dome | Rose Glass Dome - Glass Rose Gift',NULL,'B09PDWXHWN','https://m.media-amazon.com/images/I/71woLuc0L7L._AC_UL320_.jpg',348,4.7,'$27.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfbXRmOjIwMDEwODYzNjk5ODM5ODo6MDo6&url=%2FNorcalway-Daughter-Son-Husband-Anniversary%2Fdp%2FB09PDWXHWN%2Fref%3Dsr_1_74_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-74-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:22.919138-06','2023-12-19 15:18:22.919138-06','www.amazon.com'),
+ (4657,'Leekung Owl Figurines Home Decor Accents - Shelf Decor Accents Owl Statues Home Decor for Shelves Decorations Bookshelf Decor Owls Decor Sculptures Bookcase Decor Living Room Office Gift for Women',NULL,'B0BQMM8K52','https://m.media-amazon.com/images/I/81VFqcOyMEL._AC_UL320_.jpg',661,4.7,'$14.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfbXRmOjMwMDA5NjAzOTg5NDcwMjo6MDo6&url=%2FLeekung-Figurines-Home-Decor-Accents%2Fdp%2FB0BQMM8K52%2Fref%3Dsr_1_75_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-75-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:22.927012-06','2023-12-19 15:18:22.927012-06','www.amazon.com'),
+ (4658,'sugutee Good Luck Elephant Decor for Home, Large Gold Elephant Statue for Home Decor, Small Elephant Figurines and Statues (2 Pcs Medium)',NULL,'B094HBHL9Y','https://m.media-amazon.com/images/I/71xBGftng0S._AC_UL320_.jpg',582,4.7,'$43.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/sspa/click?ie=UTF8&spc=MTo0MTQ1NDc1OTA0NzY5NzE3OjE3MDMwMjA3MDE6c3BfbXRmOjMwMDA3NTE3MzQ3ODkwMjo6MDo6&url=%2FSUGUTEE-Elephant-Decorations-Figurines-Statues%2Fdp%2FB094HBHL9Y%2Fref%3Dsr_1_76_sspa%3Fkeywords%3Ddecoration%26qid%3D1703020701%26sr%3D8-76-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9tdGY%26psc%3D1',58,'2023-12-19 15:18:22.933919-06','2023-12-19 15:18:22.933919-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4659,'Reindeer decoration Reindeer cake Christmas cake top decoration Reindeer cake top eyelashes nose ears Easter Christmas Halloween party cake emoji',NULL,'B0CM3FR8V6','https://m.media-amazon.com/images/I/718NiW8yuyL._AC_UL320_.jpg',1,5.0,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Reindeer-decoration-Christmas-eyelashes-Halloween/dp/B0CM3FR8V6/ref=sr_1_82?keywords=decoration&qid=1703020701&sr=8-82',58,'2023-12-19 15:18:22.941256-06','2023-12-19 15:18:22.941256-06','www.amazon.com'),
+ (4660,'57pcs Christmas Window Clings Gingerbread Christmas Decorations Ginger Bread Man Mouse Castle Snowflake Xmas Decor Merry Christmas Decals for Windows Christmas Office Home Gingerbread Decorations',NULL,'B0CL341FKR','https://m.media-amazon.com/images/I/71qYoETxUdL._AC_UL320_.jpg',8,3.9,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Gingerbread-Decorations-Snowflake-Windows/dp/B0CL341FKR/ref=sr_1_83?keywords=decoration&qid=1703020701&sr=8-83',58,'2023-12-19 15:18:22.948067-06','2023-12-19 15:18:22.948067-06','www.amazon.com'),
+ (4661,'Beeveer 6 Pcs Christmas Table Decorations Christmas Table Top Centerpieces Vintage Wooden Retro Christmas Decor Snowman Deer Tree Santa Table Sign Ornaments for Xmas Winter Holiday Dinner Party',NULL,'B0CHFCJ946','https://m.media-amazon.com/images/I/81IU0B2kd8L._AC_UL320_.jpg',4,5.0,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Beeveer-Christmas-Decorations-Centerpieces-Ornaments/dp/B0CHFCJ946/ref=sr_1_87?keywords=decoration&qid=1703020701&sr=8-87',58,'2023-12-19 15:18:22.955214-06','2023-12-19 15:18:22.955214-06','www.amazon.com'),
+ (4662,'ZERODECO Party Decoration, 21 Pcs Multi-color Hanging Paper Fans, Pom Poms Flowers, Garlands String Polka Dot and Triangle Bunting Flags for Birthday Parties, Wedding Décor, Fiesta or Mexican Party',NULL,'B07HB1GGRV','https://m.media-amazon.com/images/I/819JiFbPnlL._AC_UL320_.jpg',11994,4.6,'$13.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Zerodeco-Decoration-Multi-color-Garlands-Triangle/dp/B07HB1GGRV/ref=sr_1_88?keywords=decoration&qid=1703020701&sr=8-88',58,'2023-12-19 15:18:22.961469-06','2023-12-19 15:18:22.961469-06','www.amazon.com'),
+ (4663,'Decor365 Glitter Champagne Gold Decorations Paper Circle Dots Garland Party Streamers Bunting Backdrop Hanging Decor Banner/Wedding/Bachelorette/Bridal Shower/Christmas/New Year/Home/Engagement/',NULL,'B07RV4H826','https://m.media-amazon.com/images/I/71km0XNHqSL._AC_UL320_.jpg',3191,4.7,'$12.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Champagne-Decorations-Streamers-Bachelorette-Engagement/dp/B07RV4H826/ref=sr_1_89?keywords=decoration&qid=1703020701&sr=8-89',58,'2023-12-19 15:18:22.967999-06','2023-12-19 15:18:22.967999-06','www.amazon.com'),
+ (4664,'Dfilio Christmas Decorations Outside, 10ft Christmas Decorative Ladder Lights with Santa Claus and Remote Control, Village Tree Sets for Indoor Outdoor, Window, Garden, Home, Wall, Xmas(Warm White)',NULL,'B0CJJ89RMC','https://m.media-amazon.com/images/I/81dPOMuc-DL._AC_UL320_.jpg',25,4.4,'$16.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Dfilio-Christmas-Decorations-Outside-Decorative/dp/B0CJJ89RMC/ref=sr_1_90?keywords=decoration&qid=1703020701&sr=8-90',58,'2023-12-19 15:18:22.975016-06','2023-12-19 15:18:22.975016-06','www.amazon.com'),
+ (4665,'4Pcs Grinchmas Decor for Christmas Tree, Funny Christmas Tree Ornament, Thief Stole Tree Topper Head Arms and Legs for Holiday Xmas Decoration',NULL,'B0CPL57STD','https://m.media-amazon.com/images/I/81DdDeXv6yL._AC_UL320_.jpg',46,4.5,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Grinchmas-Christmas-Ornament-Holiday-Decoration/dp/B0CPL57STD/ref=sr_1_93?keywords=decoration&qid=1703020701&sr=8-93',58,'2023-12-19 15:18:22.981902-06','2023-12-19 15:18:22.981902-06','www.amazon.com'),
+ (4666,'Whaline 10Pcs Christmas Snowflake Honeycomb Centerpieces Winter Wonderland Tabletop Signs Blue Silver Tiered Tray Decor for Birthday Christmas Frozen Party Decorations Supplies',NULL,'B0CJY6DMWJ','https://m.media-amazon.com/images/I/81ckcLO+2YL._AC_UL320_.jpg',2,4.5,'$8.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Whaline-Christmas-Centerpieces-Wonderland-Decorations/dp/B0CJY6DMWJ/ref=sr_1_95?keywords=decoration&qid=1703020701&sr=8-95',58,'2023-12-19 15:18:22.988951-06','2023-12-19 15:18:22.988951-06','www.amazon.com'),
+ (4667,'8Pcs Christmas Tree Decorations, Christmas Party Yard Signs with Stakes Decor for Christmas Tree or Garden Lawn Outdoor Decor Whoville Decorations Xmas Party Supplies Garland Decor Yard Signs',NULL,'B0CHRBSZPX','https://m.media-amazon.com/images/I/81ak3s8lisL._AC_UL320_.jpg',9,3.4,'$6.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Decorations-Outdoor-Whoville-Supplies/dp/B0CHRBSZPX/ref=sr_1_96?keywords=decoration&qid=1703020701&sr=8-96',58,'2023-12-19 15:18:22.996301-06','2023-12-19 15:18:22.996301-06','www.amazon.com'),
+ (4668,'Christmas LED Glass Flameless Candles with Remote and Timer, Real Wax Battery Operated Candles Warm Color Flickering Light for Festival Home Party Decor(Pack of 3)-White',NULL,'B0CJY9NYQL','https://m.media-amazon.com/images/I/81OQJ4czwSL._AC_UL320_.jpg',2426,4.6,'$25.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Flameless-Operated-Flickering-Festival/dp/B0CJY9NYQL/ref=sr_1_97?keywords=decoration&qid=1703020701&sr=8-97',58,'2023-12-19 15:18:23.0029-06','2023-12-19 15:18:23.0029-06','www.amazon.com');
+INSERT INTO public.product (id,title,description,product_key,image_url,total_reviews,rating,price,currency,modified,url,category_id,created_at,updated_at,origin) VALUES
+ (4669,'Led Flood Light 300W Equivalent 3000 LM, Outdoor Color Changing Led Stage Landscape Lights, Bluetooth RGBW Smart Floodlights 2700K & 16 Million Colors&Timing& Music Sync, IP66,US 3-Plug (2 Pack)',NULL,'B07W6SHBV5','https://m.media-amazon.com/images/I/51UP5j+awcL._AC_UL320_.jpg',8854,4.4,'$39.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Equivalent-Landscape-Bluetooth-Floodlights-Waterproof/dp/B07W6SHBV5/ref=sr_1_99?keywords=decoration&qid=1703020701&sr=8-99',58,'2023-12-19 15:18:23.010284-06','2023-12-19 15:18:23.010284-06','www.amazon.com'),
+ (4670,'Penn-Plax Spongebob Squarepants Officially Licensed Aquarium Ornament – Squidward’s Easter Island Home – Medium',NULL,'B0026H1O00','https://m.media-amazon.com/images/I/813amADOV5L._AC_UL320_.jpg',3882,4.6,'$6.30','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Penn-Plax-Spongebob-Squarepants-Officially-Licensed/dp/B0026H1O00/ref=sr_1_100?keywords=decoration&qid=1703020701&sr=8-100',58,'2023-12-19 15:18:23.016689-06','2023-12-19 15:18:23.016689-06','www.amazon.com'),
+ (4671,'Christmas Inflatable Santa Claus, 4ft Christmas Window Decorations Outdoor Indoor Blow Up Santa Claus, Build-in LED Xmas Yard Decor for Outdoor Indoor Yard Window Party Garden',NULL,'B0CCJDH3HV','https://m.media-amazon.com/images/I/71QG0TkxVqL._AC_UL320_.jpg',39,4.6,'$15.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Christmas-Inflatable-Santa-Claus-Decorations/dp/B0CCJDH3HV/ref=sr_1_104?keywords=decoration&qid=1703020701&sr=8-104',58,'2023-12-19 15:18:23.023984-06','2023-12-19 15:18:23.023984-06','www.amazon.com'),
+ (4672,'Protado Lighted Christmas Santa Claus Lamp, Crystal Glass Night Lights with Santa Claus Hat Christmas Decor for Thanksgiving Xmas New Year Holidays Home Decor, Ideal Xmas Gift Winter Indoor Decoration',NULL,'B0CDKRQ9YC','https://m.media-amazon.com/images/I/81LqCT+YeTL._AC_UL320_.jpg',41,4.7,'$9.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Protado-Christmas-Thanksgiving-Holidays-Decoration/dp/B0CDKRQ9YC/ref=sr_1_105?keywords=decoration&qid=1703020701&sr=8-105',58,'2023-12-19 15:18:23.030923-06','2023-12-19 15:18:23.030923-06','www.amazon.com'),
+ (4673,'OPSEAM Butterfly Wall Decor 24/48 PCS, 3D Butterflies Stickers for Party Decorations with Magnets(Colorful, 24)',NULL,'B09YY1D5T7','https://m.media-amazon.com/images/I/81Qwas7y+-L._AC_UL320_.jpg',1204,4.7,'$7.99','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.com/Butterfly-Butterflies-Stickers-Decorations-Colorful/dp/B09YY1D5T7/ref=sr_1_106?keywords=decoration&qid=1703020701&sr=8-106',58,'2023-12-19 15:18:23.037436-06','2023-12-19 15:18:23.037436-06','www.amazon.com'),
+ (4639,'INONE Ceramic Incense Burner with 120 Cones, Waterfall Backflow Incense Holder, Aromatherapy Ornament, Zen Decor, Home Decor, Room Decor (Cyan)',NULL,'B07TS7VD3J','https://aax-us-iad.amazon.com/e/loi/imp?b=JCICwDkgXyy9dQcZN_LTpioAAAGMg_GpOwEAAAH2AQBvbm9fdHhuX2JpZDcgICBvbm9fdHhuX2ltcDEgICCPzNh1',9781,3.9,'$13.40','USD','0001-12-31 18:09:24-05:50:36 BC','https://www.amazon.comhttps://aax-us-iad.amazon.com/x/c/RLLa41VtE14zLBtmIkNXAd4AAAGMg_GNygEAAAH2AQBvbm9fdHhuX2JpZDYgICBvbm9fdHhuX2ltcDEgICD2abum/https://www.amazon.com/INONE-Ceramic-Incense-Waterfall-Backflow/dp/B07TS7VD3J/ref=sxbs_sbv_search_btf?content-id=amzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b%3Aamzn1.sym.e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&cv_ct_cx=decoration&keywords=decoration&pd_rd_i=B07TS7VD3J&pd_rd_r=ed06abf8-0321-4f6b-8d10-0c90342ed6b9&pd_rd_w=yWi24&pd_rd_wg=FttDx&pf_rd_p=e3e25c3f-be9c-4043-8c05-6ebb65e75e4b&pf_rd_r=X85J8G3W29EVBFJ47BSE&qid=1703020694&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-1-a61ee601-6e56-4862-a8a2-1d3da5a5406f',58,'2023-12-19 15:18:16.358764-06','2023-12-19 15:18:23.044808-06','www.amazon.comhttps:');
diff --git a/src/database/migrations/1703110960211989_RemoveProductModifiedColumn.sql b/src/database/migrations/1703110960211989_RemoveProductModifiedColumn.sql
new file mode 100644
index 00000000..602afe26
--- /dev/null
+++ b/src/database/migrations/1703110960211989_RemoveProductModifiedColumn.sql
@@ -0,0 +1,2 @@
+ALTER TABLE "product"
+DROP COLUMN "modified";
diff --git a/src/database/migrations/1703288861377468_DropParticipantAddressNotNullConstraint.sql b/src/database/migrations/1703288861377468_DropParticipantAddressNotNullConstraint.sql
new file mode 100644
index 00000000..cdf84340
--- /dev/null
+++ b/src/database/migrations/1703288861377468_DropParticipantAddressNotNullConstraint.sql
@@ -0,0 +1,2 @@
+ALTER TABLE "participant"
+ALTER COLUMN "address" DROP NOT NULL;
diff --git a/src/database/migrations/1703717887048543_CreateParticipantUserView.sql b/src/database/migrations/1703717887048543_CreateParticipantUserView.sql
new file mode 100644
index 00000000..50506273
--- /dev/null
+++ b/src/database/migrations/1703717887048543_CreateParticipantUserView.sql
@@ -0,0 +1,9 @@
+CREATE VIEW participant_user AS (
+ SELECT
+ "participant".*,
+ "user"."name" AS "user_name",
+ "user"."email" AS "user_email",
+ "user"."image_url" AS "user_image_url"
+ FROM "participant"
+ LEFT JOIN "user" ON "user"."id" = "participant"."user_id"
+);
diff --git a/src/database/migrations/1704409541850862_CreateEventViewForLinks.sql b/src/database/migrations/1704409541850862_CreateEventViewForLinks.sql
new file mode 100644
index 00000000..e04137a7
--- /dev/null
+++ b/src/database/migrations/1704409541850862_CreateEventViewForLinks.sql
@@ -0,0 +1,9 @@
+CREATE VIEW event_link AS (
+ SELECT
+ "event".*,
+ "link"."id" as "link_id",
+ "link"."code" as "link_code",
+ "link"."expiration_date" as "link_expiration_date"
+ FROM "event"
+ LEFT JOIN "link" ON "link"."event_id" = "event"."id"
+);
diff --git a/src/database/migrations/1707706778959044_WishQuantity.sql b/src/database/migrations/1707706778959044_WishQuantity.sql
new file mode 100644
index 00000000..542e4c10
--- /dev/null
+++ b/src/database/migrations/1707706778959044_WishQuantity.sql
@@ -0,0 +1,2 @@
+ALTER TABLE wish
+ADD COLUMN quantity INTEGER NOT NULL DEFAULT 1;
diff --git a/src/database/models.go b/src/database/models.go
new file mode 100644
index 00000000..518811d1
--- /dev/null
+++ b/src/database/models.go
@@ -0,0 +1,196 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+
+package database
+
+import (
+ "database/sql"
+ "database/sql/driver"
+ "fmt"
+ "time"
+)
+
+type CurrencyType string
+
+const (
+ CurrencyTypeUSD CurrencyType = "USD"
+ CurrencyTypeCAD CurrencyType = "CAD"
+)
+
+func (e *CurrencyType) Scan(src interface{}) error {
+ switch s := src.(type) {
+ case []byte:
+ *e = CurrencyType(s)
+ case string:
+ *e = CurrencyType(s)
+ default:
+ return fmt.Errorf("unsupported scan type for CurrencyType: %T", src)
+ }
+ return nil
+}
+
+type NullCurrencyType struct {
+ CurrencyType CurrencyType `json:"currencyType"`
+ Valid bool `json:"valid"` // Valid is true if CurrencyType is not NULL
+}
+
+// Scan implements the Scanner interface.
+func (ns *NullCurrencyType) Scan(value interface{}) error {
+ if value == nil {
+ ns.CurrencyType, ns.Valid = "", false
+ return nil
+ }
+ ns.Valid = true
+ return ns.CurrencyType.Scan(value)
+}
+
+// Value implements the driver Valuer interface.
+func (ns NullCurrencyType) Value() (driver.Value, error) {
+ if !ns.Valid {
+ return nil, nil
+ }
+ return string(ns.CurrencyType), nil
+}
+
+func (e CurrencyType) Valid() bool {
+ switch e {
+ case CurrencyTypeUSD,
+ CurrencyTypeCAD:
+ return true
+ }
+ return false
+}
+
+func AllCurrencyTypeValues() []CurrencyType {
+ return []CurrencyType{
+ CurrencyTypeUSD,
+ CurrencyTypeCAD,
+ }
+}
+
+type Category struct {
+ ID int64 `db:"id" json:"id"`
+ Name string `db:"name" json:"name"`
+ Description sql.NullString `db:"description" json:"description"`
+ CategoryUrl sql.NullString `db:"category_url" json:"categoryUrl"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+}
+
+type Draw struct {
+ ID int64 `db:"id" json:"id"`
+ DrawerID int64 `db:"drawer_id" json:"drawerId"`
+ DraweeID int64 `db:"drawee_id" json:"draweeId"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+}
+
+type Event struct {
+ ID int64 `db:"id" json:"id"`
+ Name string `db:"name" json:"name"`
+ Description sql.NullString `db:"description" json:"description"`
+ Budget string `db:"budget" json:"budget"`
+ InvitationMessage string `db:"invitation_message" json:"invitationMessage"`
+ DrawAt time.Time `db:"draw_at" json:"drawAt"`
+ CloseAt time.Time `db:"close_at" json:"closeAt"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+}
+
+type EventLink struct {
+ ID int64 `db:"id" json:"id"`
+ Name string `db:"name" json:"name"`
+ Description sql.NullString `db:"description" json:"description"`
+ Budget string `db:"budget" json:"budget"`
+ InvitationMessage string `db:"invitation_message" json:"invitationMessage"`
+ DrawAt time.Time `db:"draw_at" json:"drawAt"`
+ CloseAt time.Time `db:"close_at" json:"closeAt"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+ LinkID sql.NullInt64 `db:"link_id" json:"linkId"`
+ LinkCode sql.NullString `db:"link_code" json:"linkCode"`
+ LinkExpirationDate sql.NullTime `db:"link_expiration_date" json:"linkExpirationDate"`
+}
+
+type Link struct {
+ ID int64 `db:"id" json:"id"`
+ Code string `db:"code" json:"code"`
+ ExpirationDate time.Time `db:"expiration_date" json:"expirationDate"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+}
+
+type Participant struct {
+ ID int64 `db:"id" json:"id"`
+ Name string `db:"name" json:"name"`
+ Email string `db:"email" json:"email"`
+ Address sql.NullString `db:"address" json:"address"`
+ Organizer bool `db:"organizer" json:"organizer"`
+ Participates bool `db:"participates" json:"participates"`
+ Accepted bool `db:"accepted" json:"accepted"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ UserID sql.NullInt64 `db:"user_id" json:"userId"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+}
+
+type ParticipantUser struct {
+ ID int64 `db:"id" json:"id"`
+ Name string `db:"name" json:"name"`
+ Email string `db:"email" json:"email"`
+ Address sql.NullString `db:"address" json:"address"`
+ Organizer bool `db:"organizer" json:"organizer"`
+ Participates bool `db:"participates" json:"participates"`
+ Accepted bool `db:"accepted" json:"accepted"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ UserID sql.NullInt64 `db:"user_id" json:"userId"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+ UserName sql.NullString `db:"user_name" json:"userName"`
+ UserEmail sql.NullString `db:"user_email" json:"userEmail"`
+ UserImageUrl sql.NullString `db:"user_image_url" json:"userImageUrl"`
+}
+
+type Product struct {
+ ID int64 `db:"id" json:"id"`
+ Title string `db:"title" json:"title"`
+ Description sql.NullString `db:"description" json:"description"`
+ ProductKey string `db:"product_key" json:"productKey"`
+ ImageUrl string `db:"image_url" json:"imageUrl"`
+ TotalReviews int32 `db:"total_reviews" json:"totalReviews"`
+ Rating float32 `db:"rating" json:"rating"`
+ Price string `db:"price" json:"price"`
+ Currency CurrencyType `db:"currency" json:"currency"`
+ Url string `db:"url" json:"url"`
+ CategoryID sql.NullInt64 `db:"category_id" json:"categoryId"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+ ProductTs interface{} `db:"product_ts" json:"productTs"`
+ Origin string `db:"origin" json:"origin"`
+}
+
+type User struct {
+ ID int64 `db:"id" json:"id"`
+ Name string `db:"name" json:"name"`
+ Email string `db:"email" json:"email"`
+ ImageUrl string `db:"image_url" json:"imageUrl"`
+ Phone sql.NullString `db:"phone" json:"phone"`
+ Admin bool `db:"admin" json:"admin"`
+ Active bool `db:"active" json:"active"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+}
+
+type Wish struct {
+ ID int64 `db:"id" json:"id"`
+ UserID int64 `db:"user_id" json:"userId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+ ProductID sql.NullInt64 `db:"product_id" json:"productId"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ CreatedAt time.Time `db:"created_at" json:"createdAt"`
+ UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
+ Quantity int32 `db:"quantity" json:"quantity"`
+}
diff --git a/src/database/participant.sql.go b/src/database/participant.sql.go
new file mode 100644
index 00000000..93489836
--- /dev/null
+++ b/src/database/participant.sql.go
@@ -0,0 +1,390 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: participant.sql
+
+package database
+
+import (
+ "context"
+ "database/sql"
+)
+
+const acceptEventInvite = `-- name: AcceptEventInvite :one
+UPDATE "participant"
+SET
+ "accepted" = TRUE,
+ "user_id" = $1,
+ "updated_at" = now()
+WHERE
+ "email" = $2
+ AND
+ "event_id" = $3
+RETURNING id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at
+`
+
+type AcceptEventInviteParams struct {
+ UserID sql.NullInt64 `db:"user_id" json:"userId"`
+ Email string `db:"email" json:"email"`
+ EventID int64 `db:"event_id" json:"eventId"`
+}
+
+func (q *Queries) AcceptEventInvite(ctx context.Context, arg AcceptEventInviteParams) (Participant, error) {
+ row := q.queryRow(ctx, q.acceptEventInviteStmt, acceptEventInvite, arg.UserID, arg.Email, arg.EventID)
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const createParticipant = `-- name: CreateParticipant :one
+INSERT INTO "participant" (
+ "name",
+ "email",
+ "address",
+ "organizer",
+ "participates",
+ "accepted",
+ "event_id",
+ "user_id"
+) VALUES (
+ $1, $2, $7, $3, $4, $5, $6, $8
+)
+RETURNING id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at
+`
+
+type CreateParticipantParams struct {
+ Name string `db:"name" json:"name"`
+ Email string `db:"email" json:"email"`
+ Organizer bool `db:"organizer" json:"organizer"`
+ Participates bool `db:"participates" json:"participates"`
+ Accepted bool `db:"accepted" json:"accepted"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ Address sql.NullString `db:"address" json:"address"`
+ UserID sql.NullInt64 `db:"user_id" json:"userId"`
+}
+
+func (q *Queries) CreateParticipant(ctx context.Context, arg CreateParticipantParams) (Participant, error) {
+ row := q.queryRow(ctx, q.createParticipantStmt, createParticipant,
+ arg.Name,
+ arg.Email,
+ arg.Organizer,
+ arg.Participates,
+ arg.Accepted,
+ arg.EventID,
+ arg.Address,
+ arg.UserID,
+ )
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const declineEventInvite = `-- name: DeclineEventInvite :one
+DELETE FROM "participant"
+WHERE
+ "email" = $1
+ AND
+ "event_id" = $2
+ AND
+ "accepted" = FALSE
+RETURNING id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at
+`
+
+type DeclineEventInviteParams struct {
+ Email string `db:"email" json:"email"`
+ EventID int64 `db:"event_id" json:"eventId"`
+}
+
+func (q *Queries) DeclineEventInvite(ctx context.Context, arg DeclineEventInviteParams) (Participant, error) {
+ row := q.queryRow(ctx, q.declineEventInviteStmt, declineEventInvite, arg.Email, arg.EventID)
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const deleteParticipantByIdAndEventId = `-- name: DeleteParticipantByIdAndEventId :one
+DELETE FROM "participant"
+WHERE "event_id" = $1 AND "id" = $2
+RETURNING id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at
+`
+
+type DeleteParticipantByIdAndEventIdParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+}
+
+func (q *Queries) DeleteParticipantByIdAndEventId(ctx context.Context, arg DeleteParticipantByIdAndEventIdParams) (Participant, error) {
+ row := q.queryRow(ctx, q.deleteParticipantByIdAndEventIdStmt, deleteParticipantByIdAndEventId, arg.EventID, arg.ParticipantID)
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findParticipantFromEventIdAndUser = `-- name: FindParticipantFromEventIdAndUser :one
+SELECT id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at FROM "participant"
+WHERE "event_id" = $1 AND "user_id" = $2
+`
+
+type FindParticipantFromEventIdAndUserParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ UserID sql.NullInt64 `db:"user_id" json:"userId"`
+}
+
+func (q *Queries) FindParticipantFromEventIdAndUser(ctx context.Context, arg FindParticipantFromEventIdAndUserParams) (Participant, error) {
+ row := q.queryRow(ctx, q.findParticipantFromEventIdAndUserStmt, findParticipantFromEventIdAndUser, arg.EventID, arg.UserID)
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findParticipantUserWithFullEventById = `-- name: FindParticipantUserWithFullEventById :many
+SELECT
+ main_participant.id, main_participant.name, main_participant.email, main_participant.address, main_participant.organizer, main_participant.participates, main_participant.accepted, main_participant.event_id, main_participant.user_id, main_participant.created_at, main_participant.updated_at, main_participant.user_name, main_participant.user_email, main_participant.user_image_url,
+ event.id, event.name, event.description, event.budget, event.invitation_message, event.draw_at, event.close_at, event.created_at, event.updated_at,
+ pu.id, pu.name, pu.email, pu.address, pu.organizer, pu.participates, pu.accepted, pu.event_id, pu.user_id, pu.created_at, pu.updated_at, pu.user_name, pu.user_email, pu.user_image_url
+FROM "participant_user" "main_participant"
+JOIN "event" ON "event"."id" = "main_participant"."event_id"
+JOIN "participant_user" "pu" ON "pu"."event_id" = "event"."id"
+WHERE "main_participant"."id" = $1
+`
+
+type FindParticipantUserWithFullEventByIdRow struct {
+ ParticipantUser ParticipantUser `db:"participant_user" json:"participantUser"`
+ Event Event `db:"event" json:"event"`
+ ParticipantUser_2 ParticipantUser `db:"participant_user_2" json:"participantUser2"`
+}
+
+func (q *Queries) FindParticipantUserWithFullEventById(ctx context.Context, id int64) ([]FindParticipantUserWithFullEventByIdRow, error) {
+ rows, err := q.query(ctx, q.findParticipantUserWithFullEventByIdStmt, findParticipantUserWithFullEventById, id)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []FindParticipantUserWithFullEventByIdRow
+ for rows.Next() {
+ var i FindParticipantUserWithFullEventByIdRow
+ if err := rows.Scan(
+ &i.ParticipantUser.ID,
+ &i.ParticipantUser.Name,
+ &i.ParticipantUser.Email,
+ &i.ParticipantUser.Address,
+ &i.ParticipantUser.Organizer,
+ &i.ParticipantUser.Participates,
+ &i.ParticipantUser.Accepted,
+ &i.ParticipantUser.EventID,
+ &i.ParticipantUser.UserID,
+ &i.ParticipantUser.CreatedAt,
+ &i.ParticipantUser.UpdatedAt,
+ &i.ParticipantUser.UserName,
+ &i.ParticipantUser.UserEmail,
+ &i.ParticipantUser.UserImageUrl,
+ &i.Event.ID,
+ &i.Event.Name,
+ &i.Event.Description,
+ &i.Event.Budget,
+ &i.Event.InvitationMessage,
+ &i.Event.DrawAt,
+ &i.Event.CloseAt,
+ &i.Event.CreatedAt,
+ &i.Event.UpdatedAt,
+ &i.ParticipantUser_2.ID,
+ &i.ParticipantUser_2.Name,
+ &i.ParticipantUser_2.Email,
+ &i.ParticipantUser_2.Address,
+ &i.ParticipantUser_2.Organizer,
+ &i.ParticipantUser_2.Participates,
+ &i.ParticipantUser_2.Accepted,
+ &i.ParticipantUser_2.EventID,
+ &i.ParticipantUser_2.UserID,
+ &i.ParticipantUser_2.CreatedAt,
+ &i.ParticipantUser_2.UpdatedAt,
+ &i.ParticipantUser_2.UserName,
+ &i.ParticipantUser_2.UserEmail,
+ &i.ParticipantUser_2.UserImageUrl,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
+const findParticipantWithIdAndEventId = `-- name: FindParticipantWithIdAndEventId :one
+SELECT id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at FROM "participant"
+WHERE "event_id" = $1 AND "id" = $2
+`
+
+type FindParticipantWithIdAndEventIdParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+}
+
+func (q *Queries) FindParticipantWithIdAndEventId(ctx context.Context, arg FindParticipantWithIdAndEventIdParams) (Participant, error) {
+ row := q.queryRow(ctx, q.findParticipantWithIdAndEventIdStmt, findParticipantWithIdAndEventId, arg.EventID, arg.ParticipantID)
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const patchParticipant = `-- name: PatchParticipant :one
+UPDATE "participant"
+SET
+ "participates" = COALESCE($2, "participates"),
+ "address" = COALESCE($3, "address"),
+ "name" = COALESCE($4, "name"),
+ "updated_at" = now()
+WHERE "event_id" = $1 AND "id" = $5
+RETURNING id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at
+`
+
+type PatchParticipantParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ Participates sql.NullBool `db:"participates" json:"participates"`
+ Address sql.NullString `db:"address" json:"address"`
+ Name sql.NullString `db:"name" json:"name"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+}
+
+func (q *Queries) PatchParticipant(ctx context.Context, arg PatchParticipantParams) (Participant, error) {
+ row := q.queryRow(ctx, q.patchParticipantStmt, patchParticipant,
+ arg.EventID,
+ arg.Participates,
+ arg.Address,
+ arg.Name,
+ arg.ParticipantID,
+ )
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const updateParticipantStatus = `-- name: UpdateParticipantStatus :one
+UPDATE "participant"
+SET
+ "organizer" = COALESCE($2, "organizer"),
+ "participates" = COALESCE($3, "participates"),
+ "updated_at" = now()
+WHERE "event_id" = $1 AND "id" = $4
+RETURNING id, name, email, address, organizer, participates, accepted, event_id, user_id, created_at, updated_at
+`
+
+type UpdateParticipantStatusParams struct {
+ EventID int64 `db:"event_id" json:"eventId"`
+ Organizer sql.NullBool `db:"organizer" json:"organizer"`
+ Participates sql.NullBool `db:"participates" json:"participates"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+}
+
+func (q *Queries) UpdateParticipantStatus(ctx context.Context, arg UpdateParticipantStatusParams) (Participant, error) {
+ row := q.queryRow(ctx, q.updateParticipantStatusStmt, updateParticipantStatus,
+ arg.EventID,
+ arg.Organizer,
+ arg.Participates,
+ arg.ParticipantID,
+ )
+ var i Participant
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.Address,
+ &i.Organizer,
+ &i.Participates,
+ &i.Accepted,
+ &i.EventID,
+ &i.UserID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
diff --git a/src/database/product.sql.go b/src/database/product.sql.go
new file mode 100644
index 00000000..cd3bcec4
--- /dev/null
+++ b/src/database/product.sql.go
@@ -0,0 +1,283 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: product.sql
+
+package database
+
+import (
+ "context"
+ "database/sql"
+)
+
+const createProduct = `-- name: CreateProduct :one
+INSERT INTO "product" (
+ "title",
+ "description",
+ "product_key",
+ "image_url",
+ "total_reviews",
+ "rating",
+ "price",
+ "currency",
+ "url",
+ "origin",
+ "category_id"
+) VALUES (
+ $1, $2, $3, $4, $5, $6, $7, $11, $8, $9, $10
+) RETURNING id, title, description, product_key, image_url, total_reviews, rating, price, currency, url, category_id, created_at, updated_at, product_ts, origin
+`
+
+type CreateProductParams struct {
+ Title string `db:"title" json:"title"`
+ Description sql.NullString `db:"description" json:"description"`
+ ProductKey string `db:"product_key" json:"productKey"`
+ ImageUrl string `db:"image_url" json:"imageUrl"`
+ TotalReviews int32 `db:"total_reviews" json:"totalReviews"`
+ Rating float32 `db:"rating" json:"rating"`
+ Price string `db:"price" json:"price"`
+ Url string `db:"url" json:"url"`
+ Origin string `db:"origin" json:"origin"`
+ CategoryID sql.NullInt64 `db:"category_id" json:"categoryId"`
+ Currency NullCurrencyType `db:"currency" json:"currency"`
+}
+
+func (q *Queries) CreateProduct(ctx context.Context, arg CreateProductParams) (Product, error) {
+ row := q.queryRow(ctx, q.createProductStmt, createProduct,
+ arg.Title,
+ arg.Description,
+ arg.ProductKey,
+ arg.ImageUrl,
+ arg.TotalReviews,
+ arg.Rating,
+ arg.Price,
+ arg.Url,
+ arg.Origin,
+ arg.CategoryID,
+ arg.Currency,
+ )
+ var i Product
+ err := row.Scan(
+ &i.ID,
+ &i.Title,
+ &i.Description,
+ &i.ProductKey,
+ &i.ImageUrl,
+ &i.TotalReviews,
+ &i.Rating,
+ &i.Price,
+ &i.Currency,
+ &i.Url,
+ &i.CategoryID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.ProductTs,
+ &i.Origin,
+ )
+ return i, err
+}
+
+const filterProducts = `-- name: FilterProducts :many
+SELECT
+ product.id, product.title, product.description, product.product_key, product.image_url, product.total_reviews, product.rating, product.price, product.currency, product.url, product.category_id, product.created_at, product.updated_at, product.product_ts, product.origin,
+ category.id, category.name, category.description, category.category_url, category.created_at, category.updated_at,
+ CEIL("product"."total_reviews" * "product"."rating") AS "weight"
+FROM "product"
+INNER JOIN "category"
+ ON "category"."id" = "product"."category_id"
+WHERE
+ (
+ $2::TEXT IS NULL OR
+ "product"."product_ts" @@ to_tsquery('english', $2::TEXT)
+ ) AND (
+ "product"."price" BETWEEN $3 AND $4
+ )
+ORDER BY
+ CASE WHEN
+ $5::BOOLEAN IS TRUE
+ THEN
+ "product"."price"
+ END ASC,
+ "weight" DESC
+LIMIT $1
+OFFSET $1 * ($6::INTEGER - 1)
+`
+
+type FilterProductsParams struct {
+ Limit int32 `db:"limit" json:"limit"`
+ Search sql.NullString `db:"search" json:"search"`
+ MinPrice string `db:"min_price" json:"minPrice"`
+ MaxPrice string `db:"max_price" json:"maxPrice"`
+ SortByPrice sql.NullBool `db:"sort_by_price" json:"sortByPrice"`
+ Page int32 `db:"page" json:"page"`
+}
+
+type FilterProductsRow struct {
+ Product Product `db:"product" json:"product"`
+ Category Category `db:"category" json:"category"`
+ Weight float64 `db:"weight" json:"weight"`
+}
+
+func (q *Queries) FilterProducts(ctx context.Context, arg FilterProductsParams) ([]FilterProductsRow, error) {
+ rows, err := q.query(ctx, q.filterProductsStmt, filterProducts,
+ arg.Limit,
+ arg.Search,
+ arg.MinPrice,
+ arg.MaxPrice,
+ arg.SortByPrice,
+ arg.Page,
+ )
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []FilterProductsRow
+ for rows.Next() {
+ var i FilterProductsRow
+ if err := rows.Scan(
+ &i.Product.ID,
+ &i.Product.Title,
+ &i.Product.Description,
+ &i.Product.ProductKey,
+ &i.Product.ImageUrl,
+ &i.Product.TotalReviews,
+ &i.Product.Rating,
+ &i.Product.Price,
+ &i.Product.Currency,
+ &i.Product.Url,
+ &i.Product.CategoryID,
+ &i.Product.CreatedAt,
+ &i.Product.UpdatedAt,
+ &i.Product.ProductTs,
+ &i.Product.Origin,
+ &i.Category.ID,
+ &i.Category.Name,
+ &i.Category.Description,
+ &i.Category.CategoryUrl,
+ &i.Category.CreatedAt,
+ &i.Category.UpdatedAt,
+ &i.Weight,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
+const findProductById = `-- name: FindProductById :one
+SELECT id, title, description, product_key, image_url, total_reviews, rating, price, currency, url, category_id, created_at, updated_at, product_ts, origin FROM "product"
+WHERE "id" = $1
+`
+
+func (q *Queries) FindProductById(ctx context.Context, id int64) (Product, error) {
+ row := q.queryRow(ctx, q.findProductByIdStmt, findProductById, id)
+ var i Product
+ err := row.Scan(
+ &i.ID,
+ &i.Title,
+ &i.Description,
+ &i.ProductKey,
+ &i.ImageUrl,
+ &i.TotalReviews,
+ &i.Rating,
+ &i.Price,
+ &i.Currency,
+ &i.Url,
+ &i.CategoryID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.ProductTs,
+ &i.Origin,
+ )
+ return i, err
+}
+
+const findProductByProductKey = `-- name: FindProductByProductKey :one
+SELECT id, title, description, product_key, image_url, total_reviews, rating, price, currency, url, category_id, created_at, updated_at, product_ts, origin FROM "product"
+WHERE "product_key" = $1
+`
+
+func (q *Queries) FindProductByProductKey(ctx context.Context, productKey string) (Product, error) {
+ row := q.queryRow(ctx, q.findProductByProductKeyStmt, findProductByProductKey, productKey)
+ var i Product
+ err := row.Scan(
+ &i.ID,
+ &i.Title,
+ &i.Description,
+ &i.ProductKey,
+ &i.ImageUrl,
+ &i.TotalReviews,
+ &i.Rating,
+ &i.Price,
+ &i.Currency,
+ &i.Url,
+ &i.CategoryID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.ProductTs,
+ &i.Origin,
+ )
+ return i, err
+}
+
+const updateProduct = `-- name: UpdateProduct :one
+UPDATE "product"
+SET
+ "price" = coalesce($2, "price"),
+ "rating" = coalesce($3, "rating"),
+ "total_reviews" = coalesce($4, "total_reviews"),
+ "title" = coalesce($5, "title"),
+ "image_url" = coalesce($6, "image_url"),
+ "description" = coalesce($7, "description"),
+ "updated_at" = now()
+WHERE "product_key" = $1
+RETURNING id, title, description, product_key, image_url, total_reviews, rating, price, currency, url, category_id, created_at, updated_at, product_ts, origin
+`
+
+type UpdateProductParams struct {
+ ProductKey string `db:"product_key" json:"productKey"`
+ Price sql.NullString `db:"price" json:"price"`
+ Rating sql.NullFloat64 `db:"rating" json:"rating"`
+ TotalReviews sql.NullInt32 `db:"total_reviews" json:"totalReviews"`
+ Title sql.NullString `db:"title" json:"title"`
+ ImageUrl sql.NullString `db:"image_url" json:"imageUrl"`
+ Description sql.NullString `db:"description" json:"description"`
+}
+
+func (q *Queries) UpdateProduct(ctx context.Context, arg UpdateProductParams) (Product, error) {
+ row := q.queryRow(ctx, q.updateProductStmt, updateProduct,
+ arg.ProductKey,
+ arg.Price,
+ arg.Rating,
+ arg.TotalReviews,
+ arg.Title,
+ arg.ImageUrl,
+ arg.Description,
+ )
+ var i Product
+ err := row.Scan(
+ &i.ID,
+ &i.Title,
+ &i.Description,
+ &i.ProductKey,
+ &i.ImageUrl,
+ &i.TotalReviews,
+ &i.Rating,
+ &i.Price,
+ &i.Currency,
+ &i.Url,
+ &i.CategoryID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.ProductTs,
+ &i.Origin,
+ )
+ return i, err
+}
diff --git a/src/database/queries/category.sql b/src/database/queries/category.sql
new file mode 100644
index 00000000..08daebe3
--- /dev/null
+++ b/src/database/queries/category.sql
@@ -0,0 +1,15 @@
+-- name: FindCategoryByName :one
+SELECT * FROM "category"
+WHERE "name" = $1;
+
+-- name: CreateCategory :one
+INSERT INTO "category" (
+ "name",
+ "description",
+ "category_url"
+) VALUES(
+ $1,
+ sqlc.narg(description),
+ sqlc.narg(category_url)
+)
+RETURNING *;
diff --git a/src/database/queries/event.sql b/src/database/queries/event.sql
new file mode 100644
index 00000000..6520876e
--- /dev/null
+++ b/src/database/queries/event.sql
@@ -0,0 +1,116 @@
+-- name: CreateEvent :one
+INSERT INTO "event" (
+ "name",
+ "description",
+ "budget",
+ "invitation_message",
+ "draw_at",
+ "close_at"
+) VALUES (
+ $1, $2, $3, $4, $5, $6
+)
+RETURNING *;
+
+-- name: UpdateEvent :one
+UPDATE "event"
+SET
+ "name" = COALESCE(sqlc.narg(name), "name"),
+ "description" = COALESCE(sqlc.narg(description), "description"),
+ "budget" = COALESCE(sqlc.narg(budget), "budget"),
+ "draw_at" = COALESCE(sqlc.narg(draw_at), "draw_at"),
+ "close_at" = COALESCE(sqlc.narg(close_at), "close_at"),
+ "updated_at" = now()
+WHERE "event"."id" = $1
+RETURNING *;
+
+-- name: DeleteEvent :one
+DELETE FROM "event"
+WHERE "event"."id" = $1
+RETURNING *;
+
+-- name: FindAllEventsWithUser :many
+SELECT
+ sqlc.embed(event),
+ sqlc.embed(p)
+FROM "event"
+JOIN "participant" "p1" ON "p1"."event_id" = "event"."id"
+JOIN "participant_user" "p" ON "p"."event_id" = "event"."id"
+WHERE
+ "p1"."user_id" = $1
+ORDER BY
+ "event"."draw_at" ASC,
+ "event"."close_at" ASC,
+ "p"."id" ASC;
+
+-- name: FindEventSimple :one
+SELECT * FROM "event" WHERE "event"."id" = $1;
+
+-- name: FindEventById :many
+SELECT
+ sqlc.embed(event_link),
+ sqlc.embed(p)
+FROM "event_link"
+JOIN "participant_user" "p" ON "p"."event_id" = "event_link"."id"
+WHERE "event_link"."id" = $1
+ORDER BY
+ "p"."organizer" DESC,
+ "p"."accepted" DESC,
+ "p"."created_at" DESC;
+
+-- name: FindEventInvites :many
+SELECT "event".*
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+WHERE
+ "participant"."accepted" = FALSE
+ AND
+ "participant"."email" = $1;
+
+
+--
+-- event verification queries
+--
+
+-- name: VerifyEventWithEmailOrUser :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+WHERE
+ "event"."id" = sqlc.arg(event_id)
+ AND
+ (
+ "participant"."user_id" = sqlc.narg(user_id) OR "participant"."email" = sqlc.narg(email)
+ );
+
+-- name: VerifyEventWithParticipantId :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+WHERE
+ "event"."id" = sqlc.arg(event_id)
+ AND
+ "participant"."id" = sqlc.arg(participant_id);
+
+-- name: VerifyEventForUserAsParticipant :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+JOIN "user" ON "user"."id" = "participant"."user_id"
+WHERE
+ "event"."id" = sqlc.arg(event_id)
+ AND
+ "participant"."participates" = TRUE
+ AND
+ "user"."id" = sqlc.arg(user_id);
+
+-- name: VerifyEventForUserAsOrganizer :one
+SELECT "event"."id"
+FROM "event"
+JOIN "participant" ON "participant"."event_id" = "event"."id"
+JOIN "user" ON "user"."id" = "participant"."user_id"
+WHERE
+ "event"."id" = sqlc.arg(event_id)
+ AND
+ "participant"."organizer" = TRUE
+ AND
+ "user"."id" = sqlc.arg(user_id);
diff --git a/src/database/queries/link.sql b/src/database/queries/link.sql
new file mode 100644
index 00000000..282cab47
--- /dev/null
+++ b/src/database/queries/link.sql
@@ -0,0 +1,19 @@
+-- name: CreateLink :one
+INSERT INTO "link" (
+ code,
+ expiration_date,
+ event_id
+) VALUES (
+ $1, $2, $3
+) RETURNING *;
+
+-- name: FindLinkByCode :one
+SELECT * FROM "link" WHERE code = $1;
+
+-- name: FindLinkWithEventByCode :one
+SELECT
+ sqlc.embed(link),
+ sqlc.embed(event)
+FROM "link"
+JOIN "event" ON "event"."id" = "link"."event_id"
+WHERE code = $1;
diff --git a/src/database/queries/participant.sql b/src/database/queries/participant.sql
new file mode 100644
index 00000000..ada6f507
--- /dev/null
+++ b/src/database/queries/participant.sql
@@ -0,0 +1,78 @@
+-- name: CreateParticipant :one
+INSERT INTO "participant" (
+ "name",
+ "email",
+ "address",
+ "organizer",
+ "participates",
+ "accepted",
+ "event_id",
+ "user_id"
+) VALUES (
+ $1, $2, sqlc.narg(address), $3, $4, $5, $6, sqlc.narg(user_id)
+)
+RETURNING *;
+
+-- name: AcceptEventInvite :one
+UPDATE "participant"
+SET
+ "accepted" = TRUE,
+ "user_id" = $1,
+ "updated_at" = now()
+WHERE
+ "email" = $2
+ AND
+ "event_id" = $3
+RETURNING *;
+
+-- name: DeclineEventInvite :one
+DELETE FROM "participant"
+WHERE
+ "email" = $1
+ AND
+ "event_id" = $2
+ AND
+ "accepted" = FALSE
+RETURNING *;
+
+-- name: FindParticipantFromEventIdAndUser :one
+SELECT * FROM "participant"
+WHERE "event_id" = $1 AND "user_id" = $2;
+
+-- name: FindParticipantWithIdAndEventId :one
+SELECT * FROM "participant"
+WHERE "event_id" = $1 AND "id" = sqlc.arg(participant_id);
+
+-- name: FindParticipantUserWithFullEventById :many
+SELECT
+ sqlc.embed(main_participant),
+ sqlc.embed(event),
+ sqlc.embed(pu)
+FROM "participant_user" "main_participant"
+JOIN "event" ON "event"."id" = "main_participant"."event_id"
+JOIN "participant_user" "pu" ON "pu"."event_id" = "event"."id"
+WHERE "main_participant"."id" = $1;
+
+-- name: UpdateParticipantStatus :one
+UPDATE "participant"
+SET
+ "organizer" = COALESCE(sqlc.narg(organizer), "organizer"),
+ "participates" = COALESCE(sqlc.narg(participates), "participates"),
+ "updated_at" = now()
+WHERE "event_id" = $1 AND "id" = sqlc.arg(participant_id)
+RETURNING *;
+
+-- name: PatchParticipant :one
+UPDATE "participant"
+SET
+ "participates" = COALESCE(sqlc.narg(participates), "participates"),
+ "address" = COALESCE(sqlc.narg(address), "address"),
+ "name" = COALESCE(sqlc.narg(name), "name"),
+ "updated_at" = now()
+WHERE "event_id" = $1 AND "id" = sqlc.arg(participant_id)
+RETURNING *;
+
+-- name: DeleteParticipantByIdAndEventId :one
+DELETE FROM "participant"
+WHERE "event_id" = $1 AND "id" = sqlc.arg(participant_id)
+RETURNING *;
diff --git a/src/database/queries/product.sql b/src/database/queries/product.sql
new file mode 100644
index 00000000..77ac94f1
--- /dev/null
+++ b/src/database/queries/product.sql
@@ -0,0 +1,62 @@
+-- name: FindProductById :one
+SELECT * FROM "product"
+WHERE "id" = $1;
+
+-- name: FindProductByProductKey :one
+SELECT * FROM "product"
+WHERE "product_key" = $1;
+
+-- name: CreateProduct :one
+INSERT INTO "product" (
+ "title",
+ "description",
+ "product_key",
+ "image_url",
+ "total_reviews",
+ "rating",
+ "price",
+ "currency",
+ "url",
+ "origin",
+ "category_id"
+) VALUES (
+ $1, $2, $3, $4, $5, $6, $7, sqlc.narg(currency), $8, $9, $10
+) RETURNING *;
+
+-- name: FilterProducts :many
+SELECT
+ sqlc.embed(product),
+ sqlc.embed(category),
+ CEIL("product"."total_reviews" * "product"."rating") AS "weight"
+FROM "product"
+INNER JOIN "category"
+ ON "category"."id" = "product"."category_id"
+WHERE
+ (
+ sqlc.narg(search)::TEXT IS NULL OR
+ "product"."product_ts" @@ to_tsquery('english', sqlc.narg(search)::TEXT)
+ ) AND (
+ "product"."price" BETWEEN sqlc.arg(min_price) AND sqlc.arg(max_price)
+ )
+ORDER BY
+ CASE WHEN
+ sqlc.narg(sort_by_price)::BOOLEAN IS TRUE
+ THEN
+ "product"."price"
+ END ASC,
+ "weight" DESC
+LIMIT $1
+OFFSET $1 * (sqlc.arg(page)::INTEGER - 1);
+
+-- name: UpdateProduct :one
+UPDATE "product"
+SET
+ "price" = coalesce(sqlc.narg('price'), "price"),
+ "rating" = coalesce(sqlc.narg('rating'), "rating"),
+ "total_reviews" = coalesce(sqlc.narg('total_reviews'), "total_reviews"),
+ "title" = coalesce(sqlc.narg('title'), "title"),
+ "image_url" = coalesce(sqlc.narg('image_url'), "image_url"),
+ "description" = coalesce(sqlc.narg('description'), "description"),
+ "updated_at" = now()
+WHERE "product_key" = $1
+RETURNING *;
diff --git a/src/database/queries/user.sql b/src/database/queries/user.sql
new file mode 100644
index 00000000..29286b3f
--- /dev/null
+++ b/src/database/queries/user.sql
@@ -0,0 +1,39 @@
+-- name: FindUserByEmail :one
+SELECT * FROM "user"
+WHERE email = $1;
+
+-- name: FindUserById :one
+SELECT * FROM "user"
+WHERE id = $1;
+
+-- name: FindUserByIdAndEmail :one
+SELECT * FROM "user"
+WHERE id = $1 AND email = $2;
+
+-- name: FindUserByIdOrEmail :one
+SELECT * FROM "user"
+WHERE id = $1 OR email = $2;
+
+-- name: SetUserAsAdmin :one
+UPDATE "user"
+SET "admin" = true
+WHERE id = $1
+RETURNING *;
+
+-- name: CreateUser :one
+INSERT INTO "user" (
+ name,
+ email,
+ image_url,
+ phone,
+ admin,
+ active
+) VALUES (
+ $1,
+ $2,
+ $3,
+ $4,
+ $5,
+ $6
+)
+RETURNING *;
diff --git a/src/database/queries/wish.sql b/src/database/queries/wish.sql
new file mode 100644
index 00000000..8e22e752
--- /dev/null
+++ b/src/database/queries/wish.sql
@@ -0,0 +1,54 @@
+-- name: CreateWish :one
+INSERT INTO wish (
+ user_id,
+ participant_id,
+ product_id,
+ event_id,
+ quantity,
+ created_at,
+ updated_at
+) VALUES (
+ $1, $2, $3, $4, COALESCE(sqlc.narg(quantity)::INTEGER, 1), now(), now()
+) RETURNING *;
+
+-- name: DeleteWish :one
+DELETE FROM wish
+WHERE id = $1
+RETURNING id;
+
+-- name: GetWishByAllIDs :one
+SELECT *
+FROM wish
+WHERE
+ id = $1 AND
+ user_id = $2 AND
+ participant_id = $3 AND
+ event_id = $4;
+
+-- name: GetAllWishesForUser :many
+SELECT
+ sqlc.embed(wish),
+ sqlc.embed(product)
+FROM wish
+INNER JOIN product ON product.id = wish.product_id
+WHERE
+ wish.user_id = $1 AND
+ wish.participant_id = $2 AND
+ wish.event_id = $3
+ORDER BY wish.created_at DESC;
+
+-- name: GetWishWithProductID :one
+SELECT * FROM wish
+WHERE
+ user_id = $1 AND
+ event_id = $2 AND
+ participant_id = $3 AND
+ product_id = $4;
+
+-- name: UpdateWishQuantity :one
+UPDATE wish
+SET
+ quantity = $2,
+ updated_at = NOW()
+WHERE id = $1
+RETURNING *;
diff --git a/src/database/user.sql.go b/src/database/user.sql.go
new file mode 100644
index 00000000..a3bdb536
--- /dev/null
+++ b/src/database/user.sql.go
@@ -0,0 +1,185 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: user.sql
+
+package database
+
+import (
+ "context"
+ "database/sql"
+)
+
+const createUser = `-- name: CreateUser :one
+INSERT INTO "user" (
+ name,
+ email,
+ image_url,
+ phone,
+ admin,
+ active
+) VALUES (
+ $1,
+ $2,
+ $3,
+ $4,
+ $5,
+ $6
+)
+RETURNING id, name, email, image_url, phone, admin, active, created_at, updated_at
+`
+
+type CreateUserParams struct {
+ Name string `db:"name" json:"name"`
+ Email string `db:"email" json:"email"`
+ ImageUrl string `db:"image_url" json:"imageUrl"`
+ Phone sql.NullString `db:"phone" json:"phone"`
+ Admin bool `db:"admin" json:"admin"`
+ Active bool `db:"active" json:"active"`
+}
+
+func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, error) {
+ row := q.queryRow(ctx, q.createUserStmt, createUser,
+ arg.Name,
+ arg.Email,
+ arg.ImageUrl,
+ arg.Phone,
+ arg.Admin,
+ arg.Active,
+ )
+ var i User
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.ImageUrl,
+ &i.Phone,
+ &i.Admin,
+ &i.Active,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findUserByEmail = `-- name: FindUserByEmail :one
+SELECT id, name, email, image_url, phone, admin, active, created_at, updated_at FROM "user"
+WHERE email = $1
+`
+
+func (q *Queries) FindUserByEmail(ctx context.Context, email string) (User, error) {
+ row := q.queryRow(ctx, q.findUserByEmailStmt, findUserByEmail, email)
+ var i User
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.ImageUrl,
+ &i.Phone,
+ &i.Admin,
+ &i.Active,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findUserById = `-- name: FindUserById :one
+SELECT id, name, email, image_url, phone, admin, active, created_at, updated_at FROM "user"
+WHERE id = $1
+`
+
+func (q *Queries) FindUserById(ctx context.Context, id int64) (User, error) {
+ row := q.queryRow(ctx, q.findUserByIdStmt, findUserById, id)
+ var i User
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.ImageUrl,
+ &i.Phone,
+ &i.Admin,
+ &i.Active,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findUserByIdAndEmail = `-- name: FindUserByIdAndEmail :one
+SELECT id, name, email, image_url, phone, admin, active, created_at, updated_at FROM "user"
+WHERE id = $1 AND email = $2
+`
+
+type FindUserByIdAndEmailParams struct {
+ ID int64 `db:"id" json:"id"`
+ Email string `db:"email" json:"email"`
+}
+
+func (q *Queries) FindUserByIdAndEmail(ctx context.Context, arg FindUserByIdAndEmailParams) (User, error) {
+ row := q.queryRow(ctx, q.findUserByIdAndEmailStmt, findUserByIdAndEmail, arg.ID, arg.Email)
+ var i User
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.ImageUrl,
+ &i.Phone,
+ &i.Admin,
+ &i.Active,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const findUserByIdOrEmail = `-- name: FindUserByIdOrEmail :one
+SELECT id, name, email, image_url, phone, admin, active, created_at, updated_at FROM "user"
+WHERE id = $1 OR email = $2
+`
+
+type FindUserByIdOrEmailParams struct {
+ ID int64 `db:"id" json:"id"`
+ Email string `db:"email" json:"email"`
+}
+
+func (q *Queries) FindUserByIdOrEmail(ctx context.Context, arg FindUserByIdOrEmailParams) (User, error) {
+ row := q.queryRow(ctx, q.findUserByIdOrEmailStmt, findUserByIdOrEmail, arg.ID, arg.Email)
+ var i User
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.ImageUrl,
+ &i.Phone,
+ &i.Admin,
+ &i.Active,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
+
+const setUserAsAdmin = `-- name: SetUserAsAdmin :one
+UPDATE "user"
+SET "admin" = true
+WHERE id = $1
+RETURNING id, name, email, image_url, phone, admin, active, created_at, updated_at
+`
+
+func (q *Queries) SetUserAsAdmin(ctx context.Context, id int64) (User, error) {
+ row := q.queryRow(ctx, q.setUserAsAdminStmt, setUserAsAdmin, id)
+ var i User
+ err := row.Scan(
+ &i.ID,
+ &i.Name,
+ &i.Email,
+ &i.ImageUrl,
+ &i.Phone,
+ &i.Admin,
+ &i.Active,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ )
+ return i, err
+}
diff --git a/src/database/wish.sql.go b/src/database/wish.sql.go
new file mode 100644
index 00000000..149308e7
--- /dev/null
+++ b/src/database/wish.sql.go
@@ -0,0 +1,243 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.25.0
+// source: wish.sql
+
+package database
+
+import (
+ "context"
+ "database/sql"
+)
+
+const createWish = `-- name: CreateWish :one
+INSERT INTO wish (
+ user_id,
+ participant_id,
+ product_id,
+ event_id,
+ quantity,
+ created_at,
+ updated_at
+) VALUES (
+ $1, $2, $3, $4, COALESCE($5::INTEGER, 1), now(), now()
+) RETURNING id, user_id, participant_id, product_id, event_id, created_at, updated_at, quantity
+`
+
+type CreateWishParams struct {
+ UserID int64 `db:"user_id" json:"userId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+ ProductID sql.NullInt64 `db:"product_id" json:"productId"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ Quantity sql.NullInt32 `db:"quantity" json:"quantity"`
+}
+
+func (q *Queries) CreateWish(ctx context.Context, arg CreateWishParams) (Wish, error) {
+ row := q.queryRow(ctx, q.createWishStmt, createWish,
+ arg.UserID,
+ arg.ParticipantID,
+ arg.ProductID,
+ arg.EventID,
+ arg.Quantity,
+ )
+ var i Wish
+ err := row.Scan(
+ &i.ID,
+ &i.UserID,
+ &i.ParticipantID,
+ &i.ProductID,
+ &i.EventID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.Quantity,
+ )
+ return i, err
+}
+
+const deleteWish = `-- name: DeleteWish :one
+DELETE FROM wish
+WHERE id = $1
+RETURNING id
+`
+
+func (q *Queries) DeleteWish(ctx context.Context, id int64) (int64, error) {
+ row := q.queryRow(ctx, q.deleteWishStmt, deleteWish, id)
+ err := row.Scan(&id)
+ return id, err
+}
+
+const getAllWishesForUser = `-- name: GetAllWishesForUser :many
+SELECT
+ wish.id, wish.user_id, wish.participant_id, wish.product_id, wish.event_id, wish.created_at, wish.updated_at, wish.quantity,
+ product.id, product.title, product.description, product.product_key, product.image_url, product.total_reviews, product.rating, product.price, product.currency, product.url, product.category_id, product.created_at, product.updated_at, product.product_ts, product.origin
+FROM wish
+INNER JOIN product ON product.id = wish.product_id
+WHERE
+ wish.user_id = $1 AND
+ wish.participant_id = $2 AND
+ wish.event_id = $3
+ORDER BY wish.created_at DESC
+`
+
+type GetAllWishesForUserParams struct {
+ UserID int64 `db:"user_id" json:"userId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+ EventID int64 `db:"event_id" json:"eventId"`
+}
+
+type GetAllWishesForUserRow struct {
+ Wish Wish `db:"wish" json:"wish"`
+ Product Product `db:"product" json:"product"`
+}
+
+func (q *Queries) GetAllWishesForUser(ctx context.Context, arg GetAllWishesForUserParams) ([]GetAllWishesForUserRow, error) {
+ rows, err := q.query(ctx, q.getAllWishesForUserStmt, getAllWishesForUser, arg.UserID, arg.ParticipantID, arg.EventID)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []GetAllWishesForUserRow
+ for rows.Next() {
+ var i GetAllWishesForUserRow
+ if err := rows.Scan(
+ &i.Wish.ID,
+ &i.Wish.UserID,
+ &i.Wish.ParticipantID,
+ &i.Wish.ProductID,
+ &i.Wish.EventID,
+ &i.Wish.CreatedAt,
+ &i.Wish.UpdatedAt,
+ &i.Wish.Quantity,
+ &i.Product.ID,
+ &i.Product.Title,
+ &i.Product.Description,
+ &i.Product.ProductKey,
+ &i.Product.ImageUrl,
+ &i.Product.TotalReviews,
+ &i.Product.Rating,
+ &i.Product.Price,
+ &i.Product.Currency,
+ &i.Product.Url,
+ &i.Product.CategoryID,
+ &i.Product.CreatedAt,
+ &i.Product.UpdatedAt,
+ &i.Product.ProductTs,
+ &i.Product.Origin,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
+const getWishByAllIDs = `-- name: GetWishByAllIDs :one
+SELECT id, user_id, participant_id, product_id, event_id, created_at, updated_at, quantity
+FROM wish
+WHERE
+ id = $1 AND
+ user_id = $2 AND
+ participant_id = $3 AND
+ event_id = $4
+`
+
+type GetWishByAllIDsParams struct {
+ ID int64 `db:"id" json:"id"`
+ UserID int64 `db:"user_id" json:"userId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+ EventID int64 `db:"event_id" json:"eventId"`
+}
+
+func (q *Queries) GetWishByAllIDs(ctx context.Context, arg GetWishByAllIDsParams) (Wish, error) {
+ row := q.queryRow(ctx, q.getWishByAllIDsStmt, getWishByAllIDs,
+ arg.ID,
+ arg.UserID,
+ arg.ParticipantID,
+ arg.EventID,
+ )
+ var i Wish
+ err := row.Scan(
+ &i.ID,
+ &i.UserID,
+ &i.ParticipantID,
+ &i.ProductID,
+ &i.EventID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.Quantity,
+ )
+ return i, err
+}
+
+const getWishWithProductID = `-- name: GetWishWithProductID :one
+SELECT id, user_id, participant_id, product_id, event_id, created_at, updated_at, quantity FROM wish
+WHERE
+ user_id = $1 AND
+ event_id = $2 AND
+ participant_id = $3 AND
+ product_id = $4
+`
+
+type GetWishWithProductIDParams struct {
+ UserID int64 `db:"user_id" json:"userId"`
+ EventID int64 `db:"event_id" json:"eventId"`
+ ParticipantID int64 `db:"participant_id" json:"participantId"`
+ ProductID sql.NullInt64 `db:"product_id" json:"productId"`
+}
+
+func (q *Queries) GetWishWithProductID(ctx context.Context, arg GetWishWithProductIDParams) (Wish, error) {
+ row := q.queryRow(ctx, q.getWishWithProductIDStmt, getWishWithProductID,
+ arg.UserID,
+ arg.EventID,
+ arg.ParticipantID,
+ arg.ProductID,
+ )
+ var i Wish
+ err := row.Scan(
+ &i.ID,
+ &i.UserID,
+ &i.ParticipantID,
+ &i.ProductID,
+ &i.EventID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.Quantity,
+ )
+ return i, err
+}
+
+const updateWishQuantity = `-- name: UpdateWishQuantity :one
+UPDATE wish
+SET
+ quantity = $2,
+ updated_at = NOW()
+WHERE id = $1
+RETURNING id, user_id, participant_id, product_id, event_id, created_at, updated_at, quantity
+`
+
+type UpdateWishQuantityParams struct {
+ ID int64 `db:"id" json:"id"`
+ Quantity int32 `db:"quantity" json:"quantity"`
+}
+
+func (q *Queries) UpdateWishQuantity(ctx context.Context, arg UpdateWishQuantityParams) (Wish, error) {
+ row := q.queryRow(ctx, q.updateWishQuantityStmt, updateWishQuantity, arg.ID, arg.Quantity)
+ var i Wish
+ err := row.Scan(
+ &i.ID,
+ &i.UserID,
+ &i.ParticipantID,
+ &i.ProductID,
+ &i.EventID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.Quantity,
+ )
+ return i, err
+}
diff --git a/src/draws/draws.controller.ts b/src/draws/draws.controller.ts
deleted file mode 100644
index a9863803..00000000
--- a/src/draws/draws.controller.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Request, HttpException, HttpStatus } from '@nestjs/common';
-import { JwtAuthGuard } from 'src/auth/jwt-auth.guard';
-import { EventsService } from 'src/events/events.service';
-import { ParticipantsService } from 'src/participants/participants.service';
-import { UsersService } from 'src/users/users.service';
-import { DrawsService } from './draws.service';
-import { BAD_REQUEST } from 'src/util/exceptions';
-import { JwtStrategy } from '../auth/jwt.strategy';
-import { sendMail, namesDrawnMail } from '../util/sendgrid';
-
-@Controller('draws')
-export class DrawsController {
- constructor(
- private readonly drawsService: DrawsService,
- private readonly usersService: UsersService,
- private readonly eventsService: EventsService,
- private readonly participantsService: ParticipantsService,
- ) { }
-
- @UseGuards(JwtAuthGuard)
- @Post()
- async create(@Request() res, @Body() body: { eventId: number }) {
- const user = await this.usersService.findByEmail(res.user.user.email);
- const event = await this.eventsService.findOneForOrganizerUser(body.eventId, user);
- if (!event) {
- throw BAD_REQUEST('Something went wrong');
- }
- return await this.drawsService.create(event, user);
- }
-
- @UseGuards(JwtAuthGuard)
- @Get('confirm/:eventId')
- async confirmDraw(@Request() res, @Param('eventId') eventId: number) {
- const user = await this.usersService.findByEmail(res.user.user.email);
- const event = await this.eventsService.findOneForOrganizerUser(eventId, user);
- if (!event) {
- throw BAD_REQUEST('Something went wrong');
- }
-
- const draws = await this.drawsService.findAllWithUser(event);
-
- if (draws.length === 0)
- throw BAD_REQUEST('No draws found for event');
-
- // Mail all particiapnts about their draws
- draws.forEach(({ drawer, drawee }) => {
- namesDrawnMail(drawer.user, event, drawee);
- });
- return {
- message: "Participants are being notified!"
- };
- }
-
- @UseGuards(JwtAuthGuard)
- @Get(':eventId')
- async findAll(@Request() res, @Param('eventId') eventId: number) {
- const user = await this.usersService.findByEmail(res.user.user.email);
- const event = await this.eventsService.findOneForOrganizerUser(eventId, user);
- if (!event) {
- throw BAD_REQUEST('Something went wrong');
- }
- return await this.drawsService.findAllWithUser(event);
- }
-
- @UseGuards(JwtAuthGuard)
- @Get('me/:eventId')
- async findForMe(@Request() res, @Param('eventId') eventId: number) {
- const user = await this.usersService.findByEmail(res.user.user.email);
- const event = await this.eventsService.findOneForUser(eventId, user);
- if (!event) {
- throw BAD_REQUEST('Event not found');
- }
-
- const participant = await this.participantsService.findByEventAndUser(event, user);
- if (!participant) {
- throw BAD_REQUEST('Something went wrong');
- }
-
- const draw = await this.drawsService.findForParticipant(event, participant);
- if (!draw) {
- throw BAD_REQUEST('No draws found for user');
- }
- return draw;
- }
-}
diff --git a/src/draws/draws.module.ts b/src/draws/draws.module.ts
deleted file mode 100644
index 0b4cf612..00000000
--- a/src/draws/draws.module.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Module } from '@nestjs/common';
-import { DrawsService } from './draws.service';
-import { DrawsController } from './draws.controller';
-import { ParticipantsModule } from 'src/participants/participants.module';
-import { EventsModule } from 'src/events/events.module';
-import { UsersModule } from 'src/users/users.module';
-import { TypeOrmModule } from '@nestjs/typeorm';
-import { Draw } from './entities/draw.entity';
-
-@Module({
- imports: [
- TypeOrmModule.forFeature([
- Draw
- ]),
- ParticipantsModule,
- EventsModule,
- UsersModule,
- ],
- controllers: [DrawsController],
- providers: [DrawsService],
- exports: [DrawsService]
-})
-export class DrawsModule {}
diff --git a/src/draws/draws.service.spec.ts b/src/draws/draws.service.spec.ts
deleted file mode 100644
index 8086f4ed..00000000
--- a/src/draws/draws.service.spec.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { DrawsService } from './draws.service';
-
-describe('DrawsService', () => {
- let service: DrawsService;
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [DrawsService],
- }).compile();
-
- service = module.get(DrawsService);
- });
-
- it('should be defined', () => {
- expect(service).toBeDefined();
- });
-});
diff --git a/src/draws/draws.service.ts b/src/draws/draws.service.ts
deleted file mode 100644
index 6e43371d..00000000
--- a/src/draws/draws.service.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-import { Injectable, HttpException, HttpStatus } from '@nestjs/common';
-import { InjectRepository } from '@nestjs/typeorm';
-import { Draw } from './entities/draw.entity';
-import { Repository } from 'typeorm';
-import { Participant } from 'src/participants/entities/participant.entity';
-import { ParticipantsService } from 'src/participants/participants.service';
-import { User } from 'src/users/entities/user.entity';
-import { Event } from 'src/events/entities/event.entity';
-import { shuffle } from 'src/util/shuffle';
-
-@Injectable()
-export class DrawsService {
- constructor(
- @InjectRepository(Draw)
- private readonly drawsRepository: Repository,
- private readonly participantsService: ParticipantsService
- ) { }
-
- async create(event: Event, user: User) {
- const allParticipants = await this.participantsService.findAllByEventWithUser(event);
- const participants = shuffle(
- allParticipants
- .filter(p => p.accepted && p.participates)
- );
- return await this.generateDraw(participants, event);
- }
-
- async findAll(event: Event): Promise {
- return await this.drawsRepository
- .createQueryBuilder('d')
- .leftJoinAndSelect('d.drawer', 'p1')
- .leftJoinAndSelect('d.drawee', 'p2')
- .where('d.eventId = :eventId', { eventId: event.id })
- .getMany();
- }
-
- async findAllWithUser(event: Event): Promise {
- return await this.drawsRepository
- .createQueryBuilder('d')
- .leftJoinAndSelect('d.drawer', 'p1')
- .leftJoinAndSelect('d.drawee', 'p2')
- .leftJoinAndSelect('p1.user', 'p1User')
- .leftJoinAndSelect('p2.user', 'p2User')
- .where('d.eventId = :eventId', { eventId: event.id })
- .getMany();
- }
-
- async findForParticipant(event: Event, participant: Participant): Promise {
- return await this.drawsRepository
- .createQueryBuilder('d')
- .leftJoinAndSelect('d.drawer', 'p1')
- .leftJoinAndSelect('d.drawee', 'p2')
- .leftJoinAndSelect('p1.user', 'p1User')
- .leftJoinAndSelect('p2.user', 'p2User')
- .where('d.eventId = :eventId AND d.drawerId = :drawerId',
- {
- eventId: event.id,
- drawerId: participant.id
- })
- .getOne();
- }
-
- private async generateDraw(participants: Participant[], event: Event) {
- await this.drawsRepository.createQueryBuilder()
- .where('eventId = :eventId', { eventId: event.id })
- .delete()
- .execute();
-
- const allDraws = this.getDraws(participants.length);
- const randomDraw = allDraws[Math.floor(Math.random() * allDraws.length)];
- const draws: Array = [];
-
- if (!randomDraw || randomDraw.size === 0) {
- throw new HttpException({
- message: 'Could not process request'
- }, HttpStatus.BAD_REQUEST);
- }
-
- for (let [key, val] of randomDraw) {
- const drawer = participants[key - 1];
- const drawee = participants[val - 1];
-
- const draw = new Draw();
- draw.event = event;
- draw.drawer = drawer;
- draw.drawee = drawee;
- draws.push(await draw.save());
- }
- return draws;
- }
-
- private getDraws(N: number): Array