├── .eslintignore ├── .eslintrc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── build.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── SimpleInstaBot.svg ├── _config.yml ├── package.json ├── public ├── electron.js ├── entitlements.mac.plist ├── index.html ├── preload.js └── store.js ├── screenshot.jpg ├── scripts └── icon-gen.mjs ├── src ├── 10178-c-bot.json ├── 13680-robot-call.json ├── 13682-heart.json ├── 14470-phone-running.json ├── App.jsx ├── icon.svg ├── index.css └── index.jsx └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /build 3 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "airbnb", 3 | "plugins": [ 4 | "react-hooks" 5 | ], 6 | "env": { 7 | "node": true, 8 | "browser": true 9 | }, 10 | "rules": { 11 | "no-await-in-loop": 0, 12 | "react/prop-types": 0, 13 | "react/forbid-prop-types": 0, 14 | "arrow-parens": 0, 15 | "react-hooks/rules-of-hooks": "error", 16 | "react-hooks/exhaustive-deps": "warn", 17 | "import/no-extraneous-dependencies": ["error", { 18 | "devDependencies": true, 19 | "optionalDependencies": false 20 | }], 21 | "jsx-a11y/control-has-associated-label": 0, 22 | 23 | "no-console": 0, 24 | "object-curly-newline": 0, 25 | "max-len": 0, 26 | "react/jsx-one-expression-per-line": 0, 27 | "react/no-multi-comp": 0, 28 | "jsx-a11y/click-events-have-key-events": 0, 29 | "jsx-a11y/accessible-emoji": 0, 30 | "no-multiple-empty-lines": ["error", { "max": 2, "maxBOF": 0, "maxEOF": 0 }], 31 | "no-promise-executor-return": 0, 32 | "react/function-component-definition": 0 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: mifi 2 | custom: ["https://paypal.me/mifino/usd", "https://mifi.no/thanks"] 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help me improve the bot 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **To Reproduce** 11 | Share your setting and describe what the bot is doing before you receive the error 12 | 13 | **Screenshots** 14 | If applicable, add screenshots to help explain your problem. 15 | 16 | **Desktop (please complete the following information):** 17 | - OS: [e.g. iOS] 18 | - Browser [e.g. chrome, safari] 19 | - Version [e.g. 22] 20 | 21 | **Additional context** 22 | Add any other context about the problem here. 23 | 24 | **Provide me with HTML** 25 | 26 | Did you receive an error while the bot is running? 27 | 28 | To make it easier for me to understand why it's failing, please copy and share with me the HTML of the button (or even better the whole page) and share it, by following these instructions: 29 | 30 | - Make sure you run the command after getting the error message 31 | - make sure that you open the dev tools **on the correct window (the instagram page)** 32 | 33 | Use Option + + J (on macOS), or Shift + CTRL + J (on Windows/Linux) to open devtools. 34 | 35 | Using the Web Inspector (F12), go to the Elements tab, right click on the tag in your code and select Copy->Copy outerHTML. Then paste that here 36 | 37 | If you feel it's private information you can instead email to simpleinstabot@yankee.no 38 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build/release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | workflow_dispatch: 8 | 9 | 10 | jobs: 11 | release: 12 | runs-on: ${{ matrix.os }} 13 | 14 | strategy: 15 | matrix: 16 | os: [macos-latest, ubuntu-latest, windows-latest] 17 | 18 | steps: 19 | # Windows fix. See https://github.com/actions/checkout/issues/226 20 | - run: git config --global core.autocrlf false 21 | 22 | - name: Check out Git repository 23 | uses: actions/checkout@v1 24 | 25 | - name: Install Node.js, NPM and Yarn 26 | uses: actions/setup-node@v1 27 | with: 28 | node-version: 16 29 | 30 | - name: Prepare for app notarization 31 | if: startsWith(matrix.os, 'macos') 32 | # Import Apple API key for app notarization on macOS 33 | run: | 34 | mkdir -p ~/private_keys/ 35 | echo '${{ secrets.api_key }}' > ~/private_keys/AuthKey_${{ secrets.api_key_id }}.p8 36 | 37 | - name: Build/release Electron app 38 | uses: samuelmeuli/action-electron-builder@v1 39 | with: 40 | # GitHub token, automatically provided to the action 41 | # (No need to define this secret in the repo settings) 42 | github_token: ${{ secrets.github_token }} 43 | 44 | # If the commit is tagged with a version (e.g. "v1.0.0"), 45 | # release the app after building 46 | release: ${{ startsWith(github.ref, 'refs/tags/v') }} 47 | 48 | mac_certs: ${{ secrets.mac_certs }} 49 | mac_certs_password: ${{ secrets.mac_certs_password }} 50 | env: 51 | # macOS notarization API key 52 | API_KEY_ID: ${{ secrets.api_key_id }} 53 | API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id }} 54 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v3 11 | 12 | - uses: actions/setup-node@v3 13 | with: 14 | node-version: 16 15 | 16 | - run: yarn 17 | - run: npm run lint 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | /dist 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Mikael Finstad 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SimpleInstaBot 🤖 2 | 3 | Use a robot to attract more followers. Now as a simple desktop app! 4 | 5 | [![Demo](./SimpleInstaBot.svg)](https://www.youtube.com/watch?v=xkjOozYU3aA) 6 | 7 | [![Discord](https://img.shields.io/discord/986052713425027072)](https://discord.gg/Rh3KT9zyhj) [![PayPal](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mifino/usd) 8 | 9 | ## How does it work? 10 | 11 | It runs as a desktop application on your computer and will every day follow up to 150 users (configurable). You choose a list of Instagram users whose market you want to target. The bot navigates to each of these, finds the last people to have followed them and then follows each of them. Then after 5 days (also configurable), it will unfollow the users. Simple and effective. 12 | 13 | The bot will remember every user it has followed, so if you quit the app and open it later, it will still clean up by unfollowing users that it previously followed. 14 | 15 | You can find logs and data in your "App Data" folder. See [userData](https://www.electronjs.org/docs/api/app#appgetpathname). For example on Mac OS: 16 | ``` 17 | Library/Application\ Support/SimpleInstaBot/followed.json 18 | ``` 19 | 20 | ## Features 21 | 22 | What makes it different from other bots? 23 | 24 | - Free and open source 25 | - No viruses or fishy business, guaranteed to not store your password! (See the code for yourself) 26 | - Simple, easy to use 27 | - Effective: Follow/unfollow is proven very effective. By only doing follow/unfollow, the bot avoids all those awkward situations where a bot comments "Awesome!" on a post depicting a tragic events. 28 | - Secure: Never stores your username or password 29 | - Safe: Runs on your own computer, to reduce the risk of being banned. Instagram is known to crack down on paid Instagram bot services and cloud and VPN IPs 30 | - Automatic rate limiting 31 | - Uses a normal browser to mimic the behavior of a normal user (does not use private APIs easily detectable by Instagram) 32 | - Randomized timed behavior 33 | - Simulates human behavior of sleeping at night, and usage in the day time 34 | - Change browser signature to avoid being identified 35 | - Passes bot tests: https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html and https://arh.antoinevastel.com/bots/areyouheadless 36 | - Runs on all major desktop platforms 37 | - Multiple modes of operation: Unfollow only, Unfollow non-mutual followers, Unfollow unknown followed accounts, Unfollow user specified list of accounts. 38 | 39 | ## Download 40 | 41 | - [Mac OS X](https://github.com/mifi/SimpleInstaBot/releases/latest/download/SimpleInstaBot-mac.dmg) 42 | - [Windows](https://github.com/mifi/SimpleInstaBot/releases/latest/download/SimpleInstaBot-win.exe) 43 | - [Linux (x64) AppImage](https://github.com/mifi/SimpleInstaBot/releases/latest/download/SimpleInstaBot-linux-x86_64.AppImage) 44 | - [Linux (x64) tar.tz](https://github.com/mifi/SimpleInstaBot/releases/latest/download/SimpleInstaBot-linux-x64.tar.bz2) 45 | - [Linux (armv7l) (Raspberry Pi) tar.tz](https://github.com/mifi/SimpleInstaBot/releases/latest/download/SimpleInstaBot-linux-armv7l.tar.bz2) 46 | 47 | NOTE: After installing you may need to bypass "Untrusted app" dialogs. This is because Microsoft requires a costly certificate to remove this dialog (I'm not going to pay for that.) Alternatively, try to Google `windows run untrusted app`. 48 | 49 | ## A word of warning 50 | 51 | Many people are getting `Action Blocked` message these days with this bot as well as other bots (it seems even people just manually following using the app) Instagram is tightening their rules by not allowing promiscuous behavior like following and liking strangers' photos as much as before, and imposing temp blocks when they think you crossed the limit. 52 | 53 | **You use this app at your own risk! I have had great success with this app but I am not responsible for any consequences it may have for your Instagram account.** 54 | 55 | ## Tips to avoid ban 56 | 57 | I advise you to follow these guidelines: 58 | 59 | - Run the bot on the same internet connection (e.g. WiFi) as you normally use your phone with the Instagram mobile app. It will reduce the chance of being flagged 60 | - Use conservative parameters (max follows/unfollows per day 150 and max 20 per hour, maybe even start lower, and work your way up) 61 | 62 | ## Multiple accounts 63 | 64 | To run the bot on multiple accounts at the same time, run it with the command line argument `--root` to specify a unique path for each instance: 65 | 66 | ``` 67 | /path/to/SimpleInstaBot --root ~/Desktop/account1 68 | /path/to/SimpleInstaBot --root ~/Desktop/account2 69 | ``` 70 | 71 | ## API / programmatic bot 72 | 73 | SimpleInstaBot is built on [instauto](https://github.com/mifi/instauto) - you can instead use that if you want to program your own headless bot. 74 | 75 | ## How to run on Raspberry PI 76 | 77 | ```bash 78 | # SSH into your PI 79 | ssh pi@ip.of.pi 80 | 81 | # Download the Raspberry Pi binary 82 | wget https://github.com/mifi/SimpleInstaBot/releases/latest/download/SimpleInstaBot-linux-armv7l.tar.bz2 83 | 84 | # Extract it 85 | tar xvf SimpleInstaBot-linux-armv7l.tar.bz2 86 | cd SimpleInstaBot-linux-armv7l 87 | 88 | # run it 89 | DISPLAY=:0 ./simpleinstabot 90 | 91 | # or: 92 | DISPLAY=:0 ./simpleinstabot --no-sandbox 93 | ``` 94 | 95 | ## Troubleshooting 96 | 97 | - Follow button not found: switch your Instagram account into English as stated in the [instauto](https://www.npmjs.com/package/instauto) troubleshooting page 98 | 99 | ## FAQ 100 | 101 | - Q: Can I run it on multiple accounts at the same time? 102 | - A: Yes, with the command line argument `--root` (see [multiple accounts](#multiple-accounts)) 103 | 104 | ## Donate 🙈 105 | 106 | This project is maintained by me alone. The project will always remain free and open source, but if it's useful for you, consider supporting me. :) It will give me extra motivation to improve it. 107 | 108 | [Paypal](https://paypal.me/mifino/usd) | [crypto](https://mifi.no/thanks) 109 | 110 | ## Credits 111 | 112 | Animations by: 113 | - https://lottiefiles.com/juanmakes 114 | - https://lottiefiles.com/user/180952 115 | - https://lottiefiles.com/aanhamdani 116 | 117 | Icons made by [Freepik](https://www.flaticon.com/authors/freepik) from [www.flaticon.com](https://www.flaticon.com/) 118 | 119 | ## See also 120 | - https://github.com/mifi/instauto - Programmatic Instagram bot API 121 | - https://instagrambot.github.io/ 122 | - https://socialmanager.tools/ 123 | - https://gramup.me/ 124 | 125 | ## Releasing 126 | 127 | ``` 128 | npm version patch && git push && git push --tags 129 | ``` 130 | Wait for github actions and go to https://github.com/mifi/SimpleInstaBot/releases 131 | 132 | --- 133 | 134 | Made with ❤️ in [🇳🇴](https://www.youtube.com/watch?v=uQIv8Vo9_Jc) 135 | 136 | [More apps by mifi.no](https://mifi.no/) 137 | 138 | Follow me on [GitHub](https://github.com/mifi/), [YouTube](https://www.youtube.com/channel/UC6XlvVH63g0H54HSJubURQA), [IG](https://www.instagram.com/mifi.no/), [Twitter](https://twitter.com/mifi_no) for more awesome content! 139 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-architect -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simpleinstabot", 3 | "productName": "SimpleInstaBot", 4 | "description": "Simple Instagram bot", 5 | "version": "1.11.2", 6 | "license": "MIT", 7 | "author": { 8 | "name": "Mikael Finstad", 9 | "email": "finstaden@gmail.com", 10 | "url": "https://mifi.no" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/mifi/SimpleInstaBot.git" 15 | }, 16 | "main": "public/electron.js", 17 | "homepage": "./", 18 | "dependencies": { 19 | "@electron/remote": "^2.0.8", 20 | "electron-is-dev": "^2.0.0", 21 | "electron-store": "^5.1.1", 22 | "filenamify": "^4.2.0", 23 | "fs-extra": "^8.1.0", 24 | "instauto": "^9.2.1", 25 | "lodash": "^4.17.21", 26 | "moment": "^2.29.4", 27 | "puppeteer-core": "^15.4.0", 28 | "puppeteer-in-electron": "^3.0.5", 29 | "yargs-parser": "^21.0.1" 30 | }, 31 | "scripts": { 32 | "start:frontend": "BROWSER=none PORT=3001 react-scripts start", 33 | "start:electron": "wait-on http://localhost:3001 && electron .", 34 | "start": "concurrently -k \"npm run start:frontend\" \"npm run start:electron\"", 35 | "icon-gen": "mkdirp icon-build && node scripts/icon-gen.mjs", 36 | "build": "yarn icon-gen && react-scripts build", 37 | "test": "react-scripts test", 38 | "eject": "react-scripts eject", 39 | "lint": "eslint --ext .jsx --ext .js .", 40 | "pack-mac": "electron-builder --mac", 41 | "prepack-mac": "yarn build", 42 | "pack-win": "electron-builder --win", 43 | "prepack-win": "yarn build", 44 | "pack-linux": "electron-builder --linux", 45 | "prepack-linux": "yarn build", 46 | "postinstall": "electron-builder install-app-deps" 47 | }, 48 | "eslintConfig": { 49 | "extends": "react-app" 50 | }, 51 | "browserslist": { 52 | "production": [ 53 | "electron 19.0" 54 | ], 55 | "development": [ 56 | "electron 19.0" 57 | ] 58 | }, 59 | "devDependencies": { 60 | "concurrently": "^4.1.0", 61 | "electron": "^19.1.8", 62 | "electron-builder": "^23.1.0", 63 | "electron-builder-notarize": "^1.5.0", 64 | "electron-devtools-installer": "^3.2.0", 65 | "eslint": "^7.32.0 || ^8.2.0", 66 | "eslint-config-airbnb": "^19.0.4", 67 | "eslint-plugin-import": "^2.25.3", 68 | "eslint-plugin-jsx-a11y": "^6.5.1", 69 | "eslint-plugin-react": "^7.28.0", 70 | "eslint-plugin-react-hooks": "^4.3.0", 71 | "evergreen-ui": "^6.10.3", 72 | "json5": "^2.2.2", 73 | "mkdirp": "^1.0.4", 74 | "react": "^18.2.0", 75 | "react-dom": "^18.2.0", 76 | "react-icons": "^4.4.0", 77 | "react-lottie-player": "^1.4.3", 78 | "react-scripts": "5.0.1", 79 | "sharp": "^0.30.7", 80 | "sweetalert2": "^11.4.23", 81 | "sweetalert2-react-content": "^5.0.1", 82 | "wait-on": "^6.0.1" 83 | }, 84 | "build": { 85 | "files": [ 86 | "build/**/*" 87 | ], 88 | "appId": "no.mifi.simpleinstabot", 89 | "artifactName": "${productName}-${os}.${ext}", 90 | "afterSign": "electron-builder-notarize", 91 | "mac": { 92 | "hardenedRuntime": true, 93 | "target": "dmg", 94 | "icon": "icon-build/app-512.png" 95 | }, 96 | "win": { 97 | "target": "portable", 98 | "icon": "icon-build/app-512.png" 99 | }, 100 | "linux": { 101 | "artifactName": "${productName}-${os}-${arch}.${ext}", 102 | "icon": "icon-build/app-512.png", 103 | "target": [ 104 | { 105 | "arch": "x64", 106 | "target": "AppImage" 107 | }, 108 | { 109 | "arch": "x64", 110 | "target": "tar.bz2" 111 | }, 112 | { 113 | "arch": "armv7l", 114 | "target": "tar.bz2" 115 | }, 116 | { 117 | "arch": "arm64", 118 | "target": "tar.bz2" 119 | } 120 | ] 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /public/electron.js: -------------------------------------------------------------------------------- 1 | const { app, BrowserWindow, powerSaveBlocker } = require('electron'); // eslint-disable-line import/no-extraneous-dependencies 2 | const isDev = require('electron-is-dev'); 3 | const path = require('path'); 4 | const pie = require('puppeteer-in-electron'); 5 | const puppeteer = require('puppeteer-core'); 6 | const { join } = require('path'); 7 | const assert = require('assert'); 8 | const fs = require('fs-extra'); 9 | const filenamify = require('filenamify'); 10 | const yargsParser = require('yargs-parser'); 11 | 12 | const Instauto = require('instauto'); 13 | const moment = require('moment'); 14 | const electronRemote = require('@electron/remote/main'); // todo migrate away from this 15 | 16 | 17 | // Keep a global reference of the window object, if you don't, the window will 18 | // be closed automatically when the JavaScript object is garbage collected. 19 | let mainWindow; 20 | 21 | let instautoDb; 22 | let instauto; 23 | let instautoWindow; 24 | let logger = console; 25 | 26 | let powerSaveBlockerId; 27 | 28 | // Must be called before electron is ready 29 | // NOTE: It will listen to a TCP port. could be an issue 30 | const pieConnectPromise = (async () => { 31 | await pie.initialize(app); 32 | return pie.connect(app, puppeteer); 33 | })(); 34 | 35 | pieConnectPromise.catch(console.error); 36 | 37 | electronRemote.initialize(); 38 | 39 | function parseCliArgs() { 40 | const ignoreFirstArgs = isDev ? 2 : 1; 41 | // production: First arg is the app executable 42 | // dev: First 2 args are electron and the electron.js 43 | const argsWithoutAppName = process.argv.length > ignoreFirstArgs ? process.argv.slice(ignoreFirstArgs) : []; 44 | 45 | return yargsParser(argsWithoutAppName); 46 | } 47 | 48 | const args = parseCliArgs(); 49 | console.log('CLI arguments', args); 50 | const { root: customRootPath } = args; 51 | 52 | if (customRootPath) { 53 | console.log('Using custom root', customRootPath); 54 | // must happen before 'ready' event 55 | app.setPath('userData', join(customRootPath, 'electron')); 56 | } 57 | 58 | function getFilePath(rel) { 59 | return join(customRootPath || app.getPath('userData'), rel); 60 | } 61 | 62 | const cookiesPath = getFilePath('cookies.json'); 63 | 64 | async function checkHaveCookies() { 65 | return fs.pathExists(cookiesPath); 66 | } 67 | 68 | async function deleteCookies() { 69 | try { 70 | await fs.unlink(cookiesPath); 71 | } catch (err) { 72 | logger.log('No cookies to delete', err); 73 | } 74 | } 75 | 76 | async function initInstautoDb(usernameIn) { 77 | const username = usernameIn && filenamify(usernameIn); 78 | const followedDbPath = getFilePath(username ? `${username}-followed.json` : 'followed.json'); 79 | const unfollowedDbPath = getFilePath(username ? `${username}-unfollowed.json` : 'followed.json'); 80 | const likedPhotosDbPath = getFilePath(username ? `${username}-liked-photos.json` : 'followed.json'); 81 | 82 | // Migrate any old paths if we have new version (with username) now: 83 | if (username) { 84 | await fs.move(getFilePath('followed.json'), followedDbPath).catch(() => {}); 85 | await fs.move(getFilePath('unfollowed.json'), unfollowedDbPath).catch(() => {}); 86 | await fs.move(getFilePath('liked-photos.json'), likedPhotosDbPath).catch(() => {}); 87 | } 88 | 89 | instautoDb = await Instauto.JSONDB({ 90 | followedDbPath, 91 | unfollowedDbPath, 92 | likedPhotosDbPath, 93 | }); 94 | } 95 | 96 | function getInstautoData() { 97 | const dayMs = 24 * 60 * 60 * 1000; 98 | 99 | if (!instautoDb) return undefined; 100 | 101 | return { 102 | numTotalFollowedUsers: instautoDb.getTotalFollowedUsers(), 103 | numTotalUnfollowedUsers: instautoDb.getTotalUnfollowedUsers(), 104 | numFollowedLastDay: instautoDb.getFollowedLastTimeUnit(dayMs).length, 105 | numUnfollowedLastDay: instautoDb.getUnfollowedLastTimeUnit(dayMs).length, 106 | numTotalLikedPhotos: instautoDb.getTotalLikedPhotos(), 107 | numLikedLastDay: instautoDb.getLikedPhotosLastTimeUnit(dayMs).length, 108 | }; 109 | } 110 | 111 | async function initInstauto({ 112 | userAgent, 113 | username, 114 | password, 115 | dontUnfollowUntilDaysElapsed, 116 | maxFollowsPerHour, 117 | maxFollowsPerDay, 118 | maxLikesPerDay, 119 | followUserRatioMin, 120 | followUserRatioMax, 121 | followUserMaxFollowers, 122 | followUserMaxFollowing, 123 | followUserMinFollowers, 124 | followUserMinFollowing, 125 | excludeUsers, 126 | dryRun, 127 | logger: loggerArg, 128 | }) { 129 | instautoWindow = new BrowserWindow({ 130 | x: 0, 131 | y: 0, 132 | webPreferences: { 133 | partition: 'instauto', // So that we have a separate session 134 | backgroundThrottling: false, 135 | }, 136 | }); 137 | 138 | const { session } = instautoWindow.webContents; 139 | await session.clearStorageData(); // we store cookies etc separately 140 | 141 | const browser = { // TODO improve API in instauto to accept page instead of browser? 142 | newPage: async () => { 143 | const pieBrowser = await pieConnectPromise; 144 | return pie.getPage(pieBrowser, instautoWindow); 145 | }, 146 | }; 147 | 148 | const options = { 149 | // Testing 150 | // randomizeUserAgent: false, 151 | // userAgent: 'Mozilla/5.0 (Linux; Android 9; RMX1971) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36', 152 | 153 | userAgent, 154 | 155 | cookiesPath, 156 | 157 | username, 158 | password, 159 | 160 | maxFollowsPerHour, 161 | maxFollowsPerDay, 162 | maxLikesPerDay, 163 | followUserRatioMin, 164 | followUserRatioMax, 165 | followUserMaxFollowers, 166 | followUserMaxFollowing, 167 | followUserMinFollowers, 168 | followUserMinFollowing, 169 | dontUnfollowUntilTimeElapsed: dontUnfollowUntilDaysElapsed * 24 * 60 * 60 * 1000, 170 | excludeUsers, 171 | dryRun, 172 | 173 | logger: loggerArg, 174 | }; 175 | 176 | mainWindow.focus(); 177 | 178 | instauto = await Instauto(instautoDb, browser, options); 179 | logger = loggerArg; 180 | 181 | powerSaveBlockerId = powerSaveBlocker.start('prevent-display-sleep'); 182 | } 183 | 184 | function cleanupInstauto() { 185 | if (powerSaveBlockerId != null) powerSaveBlocker.stop(powerSaveBlockerId); 186 | 187 | if (instautoWindow) { 188 | instautoWindow.destroy(); 189 | instautoWindow = undefined; 190 | } 191 | // TODO deinit more? 192 | instautoDb = undefined; 193 | instauto = undefined; 194 | logger = console; 195 | } 196 | 197 | async function runBotNormalMode({ 198 | usernames, ageInDays, skipPrivate, runAtHour, maxLikesPerUser, maxFollowsTotal, instantStart, enableFollowUnfollow, 199 | }) { 200 | assert(instauto); 201 | 202 | function getMsUntilNextRun() { 203 | // const now = moment('2018-08-26T13:00:00+02:00'); 204 | const now = moment(); 205 | const isAfterHour = now.hour() >= runAtHour; 206 | const nextRunTime = now.clone().startOf('day').add(runAtHour, 'hours'); 207 | if (isAfterHour) nextRunTime.add(1, 'day'); 208 | return (1 + ((Math.random() - 0.5) * 0.1)) * nextRunTime.diff(now); 209 | } 210 | 211 | async function sleepUntilNextDay() { 212 | const msUntilNextRun = getMsUntilNextRun(); 213 | logger.log(`Sleeping ${msUntilNextRun / (60 * 60 * 1000)} hours (waiting until ${runAtHour}:00)...`); 214 | await new Promise(resolve => setTimeout(resolve, msUntilNextRun)); 215 | logger.log('Done sleeping, running...'); 216 | } 217 | 218 | if (!instantStart) await sleepUntilNextDay(); 219 | 220 | for (;;) { 221 | try { 222 | // Leave room for some follows too 223 | const unfollowLimit = Math.floor(maxFollowsTotal * (2 / 3)); 224 | let unfollowedCount = 0; 225 | if (enableFollowUnfollow) { 226 | unfollowedCount = await instauto.unfollowOldFollowed({ ageInDays, limit: unfollowLimit }); 227 | if (unfollowedCount > 0) await instauto.sleep(10 * 60 * 1000); 228 | } 229 | 230 | const likingEnabled = maxLikesPerUser != null && maxLikesPerUser >= 1; 231 | 232 | await instauto.followUsersFollowers({ 233 | usersToFollowFollowersOf: usernames, 234 | maxFollowsTotal: Math.max(0, maxFollowsTotal - unfollowedCount), 235 | skipPrivate, 236 | enableLikeImages: likingEnabled, 237 | enableFollow: enableFollowUnfollow, 238 | likeImagesMax: likingEnabled ? maxLikesPerUser : undefined, 239 | }); 240 | 241 | logger.log('Done running'); 242 | 243 | await instauto.sleep(30000); 244 | } catch (err) { 245 | logger.error(err); 246 | } 247 | 248 | await sleepUntilNextDay(); 249 | } 250 | } 251 | 252 | async function runBotUnfollowAllUnknown({ limit } = {}) { 253 | await instauto.unfollowAllUnknown({ limit }); 254 | } 255 | 256 | async function runBotUnfollowNonMutualFollowers({ limit } = {}) { 257 | await instauto.unfollowNonMutualFollowers({ limit }); 258 | } 259 | 260 | async function runBotUnfollowOldFollowed({ ageInDays, limit } = {}) { 261 | await instauto.unfollowOldFollowed({ ageInDays, limit }); 262 | } 263 | 264 | async function runBotUnfollowUserList({ usersToUnfollow, limit } = {}) { 265 | await instauto.safelyUnfollowUserList(usersToUnfollow, limit); 266 | } 267 | 268 | async function runBotFollowUserList({ users, limit, skipPrivate } = {}) { 269 | await instauto.safelyFollowUserList({ users, limit, skipPrivate }); 270 | } 271 | 272 | // for easier development testing 273 | async function runTestCode() { 274 | // console.log(await instauto.doesUserFollowMe('mifi.no')); 275 | } 276 | 277 | function createWindow() { 278 | // Create the browser window. 279 | mainWindow = new BrowserWindow({ 280 | width: 800, 281 | height: 700, 282 | webPreferences: { 283 | contextIsolation: false, // todo 284 | nodeIntegration: true, // todo 285 | preload: path.join(__dirname, 'preload.js'), 286 | // https://github.com/electron/electron/issues/5107 287 | webSecurity: !isDev, 288 | backgroundThrottling: false, // Attempt to fix https://github.com/mifi/SimpleInstaBot/issues/37 289 | }, 290 | title: `SimpleInstaBot ${app.getVersion()}`, 291 | }); 292 | 293 | electronRemote.enable(mainWindow.webContents); 294 | 295 | const url = new URL(isDev ? 'http://localhost:3001' : `file://${path.join(__dirname, '../build/index.html')}`); 296 | 297 | url.searchParams.append('data', JSON.stringify({ isDev })); 298 | 299 | mainWindow.loadURL(url.toString()); 300 | 301 | if (isDev) { 302 | const { default: installExtension, REACT_DEVELOPER_TOOLS } = require('electron-devtools-installer'); // eslint-disable-line global-require,import/no-extraneous-dependencies 303 | 304 | installExtension(REACT_DEVELOPER_TOOLS) 305 | .then(name => console.log(`Added Extension: ${name}`)) 306 | .catch(err => console.log('An error occurred: ', err)); 307 | } 308 | 309 | // Open the DevTools. 310 | // mainWindow.webContents.openDevTools() 311 | 312 | // Emitted when the window is closed. 313 | mainWindow.on('closed', () => { 314 | // Dereference the window object, usually you would store windows 315 | // in an array if your app supports multi windows, this is the time 316 | // when you should delete the corresponding element. 317 | mainWindow = null; 318 | }); 319 | } 320 | 321 | // This method will be called when Electron has finished 322 | // initialization and is ready to create browser windows. 323 | // Some APIs can only be used after this event occurs. 324 | app.on('ready', createWindow); 325 | 326 | // Quit when all windows are closed. 327 | app.on('window-all-closed', () => { 328 | app.quit(); 329 | }); 330 | 331 | app.on('activate', () => { 332 | // On macOS it's common to re-create a window in the app when the 333 | // dock icon is clicked and there are no other windows open. 334 | if (mainWindow === null) { 335 | createWindow(); 336 | } 337 | }); 338 | 339 | module.exports = { 340 | initInstauto, 341 | initInstautoDb, 342 | getInstautoData, 343 | runBotNormalMode, 344 | runBotUnfollowAllUnknown, 345 | runBotUnfollowNonMutualFollowers, 346 | runBotUnfollowOldFollowed, 347 | runBotUnfollowUserList, 348 | runBotFollowUserList, 349 | runTestCode, 350 | cleanupInstauto, 351 | checkHaveCookies, 352 | deleteCookies, 353 | }; 354 | -------------------------------------------------------------------------------- /public/entitlements.mac.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.allow-jit 6 | 7 | com.apple.security.cs.allow-unsigned-executable-memory 8 | 9 | com.apple.security.cs.allow-dyld-environment-variables 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 20 | 21 | 22 | 23 |
24 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /public/preload.js: -------------------------------------------------------------------------------- 1 | const preloadConfig = JSON.parse(new URL(window.location).searchParams.get('data')); 2 | 3 | window.isDev = preloadConfig.isDev; 4 | -------------------------------------------------------------------------------- /public/store.js: -------------------------------------------------------------------------------- 1 | const Store = require('electron-store'); 2 | 3 | const defaults = { 4 | skipPrivate: true, 5 | currentUsername: undefined, 6 | usersToFollowFollowersOf: ['@lostleblanc', '@samkolder', '@bomkanari'], 7 | 8 | userAgent: '', 9 | maxFollowsPerHour: 20, 10 | maxFollowsPerDay: 150, 11 | maxLikesPerDay: 50, 12 | enableFollowUnfollow: true, 13 | maxLikesPerUser: 2, 14 | followUserRatioMin: 0.2, 15 | followUserRatioMax: 4.0, 16 | followUserMaxFollowers: null, 17 | followUserMaxFollowing: null, 18 | followUserMinFollowers: null, 19 | followUserMinFollowing: 10, 20 | dontUnfollowUntilDaysElapsed: 5, 21 | runAtHour: 10, 22 | }; 23 | 24 | const store = new Store({ 25 | defaults, 26 | }); 27 | 28 | module.exports = { store, defaults }; 29 | -------------------------------------------------------------------------------- /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mifi/SimpleInstaBot/516bde325f2a09af827294dc59605a4c0692a065/screenshot.jpg -------------------------------------------------------------------------------- /scripts/icon-gen.mjs: -------------------------------------------------------------------------------- 1 | import sharp from 'sharp'; 2 | 3 | const svg2png = (from, to, width, height) => sharp(from) 4 | .png() 5 | .resize(width, height, { 6 | fit: sharp.fit.contain, 7 | background: { r: 0, g: 0, b: 0, alpha: 0 }, 8 | }) 9 | .toFile(to); 10 | 11 | await svg2png('src/icon.svg', './icon-build/app-512.png', 512, 512); 12 | -------------------------------------------------------------------------------- /src/10178-c-bot.json: -------------------------------------------------------------------------------- 1 | {"v":"5.5.9","fr":29.9700012207031,"ip":1.00000004073083,"op":124.000005050624,"w":320,"h":260,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":85,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":94,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":104,"s":[100]},{"t":113.000004602584,"s":[1]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[161,130,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-46,-49],[-19,-51]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.556862745098,0.286274509804,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":140.000005702317,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"tolottify Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,130,0],"ix":2},"a":{"a":0,"k":[160,130,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.75,0],[0,0]],"o":[[0,0],[5.75,0],[0,0]],"v":[[-9.562,-1.5],[0.188,1.5],[9.562,-1.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[156.938,96.5],"to":[0.01,-0.5],"ti":[-0.01,0.5]},{"t":75.0000030548126,"s":[156.998,93.501]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.456,0],[-1.019,-5.16],[0,0],[7.113,0],[1.056,-6.821]],"o":[[1.02,-5.16],[5.455,0],[0,0],[-1.055,-6.821],[-7.114,0],[0,0]],"v":[[-11.019,6.033],[0.001,-3.033],[11.02,6.033],[14.057,6.033],[0.001,-6.033],[-14.057,6.033]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[184.249,70.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.277,0],[1.208,4.909],[0,0],[-6.94,0],[-1.26,6.578]],"o":[[-1.208,4.909],[-5.277,0],[0,0],[1.259,6.578],[6.939,0],[0,0]],"v":[[10.913,-5.783],[0,2.783],[-10.913,-5.783],[-13.988,-5.783],[0,5.783],[13.988,-5.783]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[184.25,87.217],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.277,0],[1.208,4.909],[0,0],[-6.94,0],[-1.26,6.578]],"o":[[-1.208,4.909],[-5.277,0],[0,0],[1.259,6.578],[6.939,0],[0,0]],"v":[[10.913,-5.783],[0,2.783],[-10.913,-5.783],[-13.988,-5.783],[0,5.783],[13.988,-5.783]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.25,87.217],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.455,0],[-1.02,-5.16],[0,0],[7.112,0],[1.056,-6.821]],"o":[[1.02,-5.16],[5.455,0],[0,0],[-1.056,-6.821],[-7.112,0],[0,0]],"v":[[-11.02,6.033],[0,-3.033],[11.02,6.033],[14.058,6.033],[0,-6.033],[-14.058,6.033]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.25,70.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[129.25,78.75],"ix":2},"a":{"a":0,"k":[129.25,78.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":78,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":89,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":100,"s":[0]},{"t":113.000004602584,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.821,0],[0.733,0.318],[0.537,0.577],[0.3,0.78],[0,0.925],[-0.196,0.665],[-0.364,0.549],[-0.497,0.399],[-0.606,0.215],[-0.682,0],[-0.687,-0.284],[-0.503,-0.514],[-0.254,-0.705],[0,0],[0.549,0.364],[0.693,0],[0.462,-0.231],[0.347,-0.416],[0.19,-0.566],[0,-0.659],[-0.191,-0.548],[-0.341,-0.398],[-0.467,-0.219],[-0.567,0],[-0.549,0.358],[-0.336,0.669],[0,0],[0.508,-0.52],[0.705,-0.278]],"o":[[-0.866,0],[-0.734,-0.318],[-0.538,-0.578],[-0.301,-0.78],[0,-0.739],[0.197,-0.665],[0.364,-0.548],[0.497,-0.399],[0.607,-0.214],[0.798,0],[0.689,0.283],[0.502,0.515],[0,0],[-0.301,-0.659],[-0.55,-0.364],[-0.544,0],[-0.463,0.231],[-0.346,0.417],[-0.191,0.566],[0,0.659],[0.19,0.549],[0.34,0.399],[0.468,0.219],[0.716,0],[0.548,-0.358],[0,0],[-0.266,0.705],[-0.51,0.52],[-0.706,0.277]],"v":[[0.373,6.5],[-2.027,6.023],[-3.934,4.68],[-5.191,2.643],[-5.642,0.086],[-5.347,-2.02],[-4.506,-3.84],[-3.215,-5.261],[-1.56,-6.18],[0.373,-6.5],[2.6,-6.075],[4.386,-4.88],[5.521,-3.051],[3.494,-2.479],[2.219,-4.013],[0.356,-4.559],[-1.152,-4.212],[-2.366,-3.242],[-3.171,-1.768],[-3.458,0.069],[-3.171,1.88],[-2.374,3.301],[-1.161,4.229],[0.391,4.558],[2.289,4.021],[3.615,2.479],[5.642,3.05],[4.482,4.888],[2.662,6.084]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.681999954523,0.702000038297,0.717999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[156.458,36.24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.875,6.355],[8.664,0],[5.816,3.408],[0,-14.376],[-26.086,0],[0,20.849]],"o":[[-5.826,3.443],[-8.614,0],[-14.795,6.375],[0,20.849],[26.083,0],[0,-14.424]],"v":[[22.23,-35.53],[-0.124,-29.971],[-22.378,-35.469],[-47.23,-2.221],[0.001,35.53],[47.23,-2.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.234999997008,0.238999998803,0.255000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.125,84.47],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.135,7.358],[11.833,0],[5.647,5.985],[0,-14.604],[-28.503,0],[0,22.782]],"o":[[-5.684,5.89],[-11.948,0],[-14.325,7.33],[0,22.782],[28.502,0],[0,-14.489]],"v":[[28.12,-37.829],[0.25,-27.997],[-27.781,-38.003],[-51.609,-3.247],[0,38.003],[51.608,-3.247]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.187999994615,0.204000001795,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[156.75,82.498],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.072,17.525],[12.078,12.743],[-1.073,-17.525],[-12.078,-12.743]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[223,54],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.072,17.525],[-12.079,12.743],[1.073,-17.525],[12.079,-12.743]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[91,54],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-30.79],[38.521,0],[0,30.79],[-38.522,0]],"o":[[0,30.79],[-38.522,0],[0,-30.79],[38.521,0]],"v":[[69.75,0],[0,55.75],[-69.75,0],[0,-55.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.902000038297,0.902000038297,0.902000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[156.75,72.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[9.342,-17.458],[-16.44,0],[-12.446,9.231],[18.638,0]],"o":[[11.923,7.605],[18.317,0],[-9.621,-15.944],[-19.676,0]],"v":[[-45.442,8.505],[-1.98,20.667],[45.442,5.785],[0.77,-20.667]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[158.73,111.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[157,74.25],"to":[-1.138,0.083],"ti":[0.186,-0.062]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[150.172,74.748],"to":[-0.129,0.043],"ti":[-1.763,0.053]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[150.172,74.67],"to":[0.781,-0.023],"ti":[-0.292,0.007]},{"t":38.0000015477717,"s":[155.883,74.62]}],"ix":2},"a":{"a":0,"k":[157,74.25],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-6.025]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":31,"s":[-6.025]},{"t":38.0000015477717,"s":[-1.153]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"head","np":11,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.013],[1.013,0],[0,1.013],[-1.013,0]],"o":[[0,1.013],[-1.013,0],[0,-1.013],[1.013,0]],"v":[[1.833,-0.001],[0,1.833],[-1.833,-0.001],[0,-1.834]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[170.499,159.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":56,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[100]},{"t":89.0000036250443,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.013],[1.013,0],[0,1.013],[-1.012,0]],"o":[[0,1.013],[-1.012,0],[0,-1.013],[1.013,0]],"v":[[1.833,-0.001],[0,1.833],[-1.833,-0.001],[0,-1.834]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.499,159.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":33,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":48,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":74,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[100]},{"t":105.000004276738,"s":[1]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.013],[1.012,0],[0,1.013],[-1.013,0]],"o":[[0,1.013],[-1.013,0],[0,-1.013],[1.012,0]],"v":[[1.834,-0.001],[0.001,1.833],[-1.833,-0.001],[0.001,-1.834]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.556999954523,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150.499,159.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":33,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":48,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":63,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":89,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":104,"s":[100]},{"t":119.000004846969,"s":[2]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[160.499,159.751],"ix":2},"a":{"a":0,"k":[160.499,159.751],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"light","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,10.357],[29.641,0],[0,-32.77],[-4.22,-8.475]],"o":[[4.219,-8.475],[0,-32.77],[-29.639,0],[0,10.357],[0,0]],"v":[[47.042,43.95],[53.667,15.384],[-0.001,-43.95],[-53.667,15.384],[-47.042,43.95]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.902000038297,0.902000038297,0.902000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[159.501,134.616],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-12.121,-59.054]],"o":[[0,0],[0,0]],"v":[[20.86,-30.328],[-8.739,30.328]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[104.14,154.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.201,0],[-0.384,5.103],[0,0],[0,0]],"o":[[0,0],[0,0],[0.385,5.103],[5.199,0],[0,0],[0,0],[0,0]],"v":[[-9.875,-11.096],[-9.875,1.971],[-9.838,1.971],[0,11.096],[9.836,1.971],[9.875,1.971],[9.875,-11.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.902000038297,0.902000038297,0.902000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[183.709,220.529],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.2,0],[-0.384,5.103],[0,0],[0,0]],"o":[[0,0],[0,0],[0.384,5.103],[5.2,0],[0,0],[0,0],[0,0]],"v":[[-9.875,-11.096],[-9.875,1.971],[-9.837,1.971],[0,11.096],[9.837,1.971],[9.875,1.971],[9.875,-11.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.902000038297,0.902000038297,0.902000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.375,220.529],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.201,0],[-0.384,5.103],[0,0],[0,0]],"o":[[0,0],[0,0],[0.385,5.103],[5.199,0],[0,0],[0,0],[0,0]],"v":[[-9.875,-41.062],[-9.875,31.938],[-9.838,31.938],[0,41.062],[9.836,31.938],[9.875,31.938],[9.875,-41.062]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[183.709,190.562],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.2,0],[-0.384,5.103],[0,0],[0,0]],"o":[[0,0],[0,0],[0.384,5.103],[5.2,0],[0,0],[0,0],[0,0]],"v":[[-9.875,-41.062],[-9.875,31.938],[-9.837,31.938],[0,41.062],[9.837,31.938],[9.875,31.938],[9.875,-41.062]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.375,190.562],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.201,0],[-0.384,5.103],[0,0],[0,0]],"o":[[0,0],[0,0],[0.385,5.103],[5.199,0],[0,0],[0,0],[0,0]],"v":[[-9.875,-41.062],[-9.875,31.938],[-9.838,31.938],[0,41.062],[9.836,31.938],[9.875,31.938],[9.875,-41.062]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[183.709,190.562],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-5.2,0],[-0.384,5.103],[0,0],[0,0]],"o":[[0,0],[0,0],[0.384,5.103],[5.2,0],[0,0],[0,0],[0,0]],"v":[[-9.875,-41.062],[-9.875,31.938],[-9.837,31.938],[0,41.062],[9.837,31.938],[9.875,31.938],[9.875,-41.062]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.375,190.562],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[-7.791,-3.137],[-2.143,-2.91],[1.05,-17.169]],"o":[[0,0],[2.751,1.108],[12.848,17.446],[0,0]],"v":[[-26.372,13.616],[-10.003,14.14],[-2.457,19.982],[11.424,71.365]],"c":false}]},{"t":33.0000013441176,"s":[{"i":[[0,0],[-8.327,-4.979],[-1.481,-2.011],[-3.091,38.468]],"o":[[0,0],[1.833,1.096],[12.848,17.446],[0,0]],"v":[[-26.372,13.616],[-7.495,15.382],[-2.457,19.982],[24.924,-1.635]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.816000007181,0.838999968884,0.859000052658,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[219.167,110.167],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"waving hand","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":140.000005702317,"st":0,"bm":0}],"markers":[]} -------------------------------------------------------------------------------- /src/13680-robot-call.json: -------------------------------------------------------------------------------- 1 | {"v":"4.12.2","fr":29.9700012207031,"ip":0,"op":240.0000097754,"w":400,"h":400,"nm":"Robot","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"Mouth - Teeth","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[31,61],[31,31.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.5,31.5],[0.5,61]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-30.5,61],[-30.5,31.5]],"c":false},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.279],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p279_1_0p333_0"],"t":73,"s":[100],"e":[0]},{"t":84.0000034213901}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":4,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":60.0000024438501,"op":360.000014663101,"st":60.0000024438501,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Mouth - Shape","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[120,30],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.478],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p478_1_0p167_0p167"],"t":60,"s":[51],"e":[0]},{"t":80.0000032584668}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.478],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p478_1_0p167_0p167"],"t":60,"s":[52],"e":[100]},{"t":80.0000032584668}],"ix":2},"o":{"a":0,"k":-90,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.101,45.862],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":60.0000024438501,"op":360.000014663101,"st":60.0000024438501,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Eyes - Flash","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":130,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":131,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":150,"s":[100],"e":[0]},{"t":151.000006150356}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,6,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-39.75,-15.5],[-19.75,-5.5],[-39,3.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[40.5,3.75],[19.75,-6.25],[39.75,-15.5]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":48.0000019550801,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Eyes - Closed","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":93,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":94,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":98,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":99,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":103,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":104,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":108,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":109,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":171,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":172,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":176,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":177,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":181,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":182,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":186,"s":[100],"e":[0]},{"t":187.000007616666}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,6,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-40,-5.5],[-20,-5.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[20,-5.5],[40,-5.5]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":48.0000019550801,"op":348.000014174331,"st":48.0000019550801,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Eyes - Open","parent":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":93,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":94,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":98,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":99,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":103,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":104,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":108,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":109,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":130,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":131,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":150,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":151,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":171,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":172,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":176,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":177,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":181,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":182,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":186,"s":[0],"e":[100]},{"t":187.000007616666}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-6,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[20,20],"ix":2},"p":{"a":0,"k":[-30,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"d":1,"ty":"el","s":{"a":0,"k":[20,20],"ix":2},"p":{"a":0,"k":[30,0],"ix":3},"nm":"Ellipse Path 2","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.679],"y":[0.796]},"o":{"x":[0.322],"y":[0]},"n":["0p679_0p796_0p322_0"],"t":48,"s":[0],"e":[12.432]},{"i":{"x":[0.503],"y":[1]},"o":{"x":[0.358],"y":[-0.774]},"n":["0p503_1_0p358_-0p774"],"t":66,"s":[12.432],"e":[10]},{"t":78.0000031770051}],"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":48.0000019550801,"op":348.000014174331,"st":48.0000019550801,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Head","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,278,0],"ix":2,"x":"var $bm_rt;\n$bm_rt = wiggle(10, effect('Wiggle Amount')('Slider'));"},"a":{"a":0,"k":[0,88,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":21,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":90,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":180,"s":[100,100,100],"e":[100,100,100]},{"t":270.000010997325}],"ix":6}},"ao":0,"ef":[{"ty":5,"nm":"Wiggle Amount","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":130,"s":[0],"e":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":131,"s":[3],"e":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":150,"s":[3],"e":[0]},{"t":161.000006557664}],"ix":1}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[180,130],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":15,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.133,22.017],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":20,"s":[50],"e":[100]},{"t":44.0000017921567}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":20,"s":[50],"e":[0]},{"t":44.0000017921567}],"ix":2},"o":{"a":0,"k":121,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":21.0000008553475,"op":300.00001221925,"st":-5.00000020365417,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Antena - Radio","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":130,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.5,-23],[-0.5,-73]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.5,-23],[-0.5,-84.75]],"c":false}]},{"t":146.000005946702}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":136.4,"s":[10],"e":[0]},{"t":146.000005946702}],"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"rp","c":{"a":0,"k":5,"ix":1},"o":{"a":0,"k":0,"ix":2},"m":1,"ix":3,"tr":{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":45,"ix":4},"so":{"a":0,"k":100,"ix":5},"eo":{"a":0,"k":100,"ix":6},"nm":"Transform"},"nm":"Repeater 1","mn":"ADBE Vector Filter - Repeater","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-90,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p105_1_0p333_0"],"t":130,"s":[0],"e":[100]},{"t":140.133755707765}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0_1_0p333_0"],"t":138,"s":[0],"e":[100]},{"t":146.000005946702}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":130.000005295009,"op":151.000006150356,"st":130.000005295009,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Antena - Stem","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.5,10.5],[1,37]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[0],"e":[100]},{"t":21.0000008553475}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Antena - Tip","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-80,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.211,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0]},"n":["0p211_1_0p167_0p167","0p667_1_0p167_0"],"t":0,"s":[0,20],"e":[20,20]},{"t":20.0000008146167}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.211],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p211_1_0p167_0p167"],"t":0,"s":[0],"e":[10]},{"t":20.0000008146167}],"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"bm":0}]} -------------------------------------------------------------------------------- /src/13682-heart.json: -------------------------------------------------------------------------------- 1 | {"v":"5.1.1","fr":29.9700012207031,"ip":0,"op":150.000006109625,"w":300,"h":300,"nm":"Heart Animated","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Parent","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[150,150,0],"e":[150,155,0],"to":[0,0.83333331346512,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[150,155,0],"e":[150,150,0],"to":[0,0,0],"ti":[0,0.83333331346512,0]},{"t":60.0000024438501}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":181.000007372281,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Traces above 12","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":300,"ix":10},"p":{"a":0,"k":[0,-22,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":123,"s":[0],"e":[100]},{"t":132.993755416946}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":128.006,"s":[0],"e":[100]},{"t":138.000005620855}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":123,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":128,"s":[10],"e":[0]},{"t":137.990005620448}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":123.000005009893,"op":274.000011160249,"st":123.000005009893,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Traces above 11","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":240,"ix":10},"p":{"a":0,"k":[0,-20,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":126,"s":[0],"e":[100]},{"t":135.993755539139}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":131.006,"s":[0],"e":[100]},{"t":141.000005743048}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":126,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":131,"s":[10],"e":[0]},{"t":140.99000574264}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126.000005132085,"op":277.000011282441,"st":126.000005132085,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Traces above 10","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":180,"ix":10},"p":{"a":0,"k":[0,-6,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":129,"s":[0],"e":[100]},{"t":138.993755661332}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":134.006,"s":[0],"e":[100]},{"t":144.00000586524}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":129,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":134,"s":[10],"e":[0]},{"t":143.990005864833}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":129.000005254278,"op":280.000011404634,"st":129.000005254278,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Traces above 9","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":120,"ix":10},"p":{"a":0,"k":[0,-20,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":126,"s":[0],"e":[100]},{"t":135.993755539139}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":131.006,"s":[0],"e":[100]},{"t":141.000005743048}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":126,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":131,"s":[10],"e":[0]},{"t":140.99000574264}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126.000005132085,"op":277.000011282441,"st":126.000005132085,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Traces above 8","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":60,"ix":10},"p":{"a":0,"k":[0,-22,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":123,"s":[0],"e":[100]},{"t":132.993755416946}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":128.006,"s":[0],"e":[100]},{"t":138.000005620855}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":123,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":128,"s":[10],"e":[0]},{"t":137.990005620448}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":123.000005009893,"op":274.000011160249,"st":123.000005009893,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Traces above 7","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,2,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":120,"s":[0],"e":[100]},{"t":129.993755294754}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":125.006,"s":[0],"e":[100]},{"t":135.000005498663}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":120,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":125,"s":[10],"e":[0]},{"t":134.990005498255}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":120.0000048877,"op":271.000011038056,"st":120.0000048877,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Traces above 6","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":300,"ix":10},"p":{"a":0,"k":[0,-22,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":51,"s":[0],"e":[100]},{"t":60.9937524843264}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":56.006,"s":[0],"e":[100]},{"t":66.0000026882351}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":51,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":56,"s":[10],"e":[0]},{"t":65.9900026878278}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":51.0000020772726,"op":202.000008227629,"st":51.0000020772726,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Traces above 5","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":240,"ix":10},"p":{"a":0,"k":[0,-20,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":54,"s":[0],"e":[100]},{"t":63.9937526065189}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":59.006,"s":[0],"e":[100]},{"t":69.0000028104276}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":54,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":59,"s":[10],"e":[0]},{"t":68.9900028100203}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":54.0000021994651,"op":205.000008349821,"st":54.0000021994651,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Traces above 4","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":180,"ix":10},"p":{"a":0,"k":[0,-6,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":57,"s":[0],"e":[100]},{"t":66.9937527287114}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":62.006,"s":[0],"e":[100]},{"t":72.0000029326201}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":57,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":62,"s":[10],"e":[0]},{"t":71.9900029322128}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":57.0000023216576,"op":208.000008472014,"st":57.0000023216576,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Traces above 3","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":120,"ix":10},"p":{"a":0,"k":[0,-20,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":54,"s":[0],"e":[100]},{"t":63.9937526065189}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":59.006,"s":[0],"e":[100]},{"t":69.0000028104276}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":54,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":59,"s":[10],"e":[0]},{"t":68.9900028100203}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":54.0000021994651,"op":205.000008349821,"st":54.0000021994651,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Traces above 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":60,"ix":10},"p":{"a":0,"k":[0,-22,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":51,"s":[0],"e":[100]},{"t":60.9937524843264}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":56.006,"s":[0],"e":[100]},{"t":66.0000026882351}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":51,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":56,"s":[10],"e":[0]},{"t":65.9900026878278}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":51.0000020772726,"op":202.000008227629,"st":51.0000020772726,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Traces above","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,2,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-85.562],[0,-127.562]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":48,"s":[0],"e":[100]},{"t":57.9937523621339}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":53.006,"s":[0],"e":[100]},{"t":63.0000025660426}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":48,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.431],"y":[0]},"n":["0p667_1_0p431_0"],"t":53,"s":[10],"e":[0]},{"t":62.9900025656353}],"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":48.0000019550801,"op":199.000008105436,"st":48.0000019550801,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Heart","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.5,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.838,-33.403],[0,19.513],[-22.794,0],[0,0],[-22.795,0],[0,-19.513]],"o":[[-55.838,-33.403],[0,-19.513],[22.794,0],[0,0],[22.795,0],[0,19.513]],"v":[[-1.5,61.5],[-73.654,-26.805],[-34.959,-65.5],[-1.5,-42.349],[31.959,-65.5],[70.654,-26.805]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[50],"e":[100]},{"t":30.0000012219251}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.141176477075,0.482352942228,0.631372570992,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Stroke","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.838,-33.403],[0,19.513],[-22.794,0],[0,0],[-22.795,0],[0,-19.513]],"o":[[-55.838,-33.403],[0,-19.513],[22.794,0],[0,0],[22.795,0],[0,19.513]],"v":[[-1.5,61.5],[-73.654,-26.805],[-34.959,-65.5],[-1.5,-42.349],[31.959,-65.5],[70.654,-26.805]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141176477075,0.482352942228,0.627451002598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.491,0.491],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p491_1_0p333_0","0p491_1_0p333_0"],"t":33.999,"s":[0,0],"e":[100,100]},{"t":55.0000022401959}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Fills 3","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.838,-33.403],[0,19.513],[-22.794,0],[0,0],[-22.795,0],[0,-19.513]],"o":[[-55.838,-33.403],[0,-19.513],[22.794,0],[0,0],[22.795,0],[0,19.513]],"v":[[-1.5,61.5],[-73.654,-26.805],[-34.959,-65.5],[-1.5,-42.349],[31.959,-65.5],[70.654,-26.805]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.529411792755,0.717647075653,0.796078443527,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.491,0.491],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p491_1_0p333_0","0p491_1_0p333_0"],"t":27,"s":[0,0],"e":[100,100]},{"t":48.0000019550801}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Fills 2","np":2,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.838,-33.403],[0,19.513],[-22.794,0],[0,0],[-22.795,0],[0,-19.513]],"o":[[-55.838,-33.403],[0,-19.513],[22.794,0],[0,0],[22.795,0],[0,19.513]],"v":[[-1.5,61.5],[-73.654,-26.805],[-34.959,-65.5],[-1.5,-42.349],[31.959,-65.5],[70.654,-26.805]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.73417788744,0.882435560226,0.944209575653,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.491,0.491],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p491_1_0p333_0","0p491_1_0p333_0"],"t":20,"s":[0,0],"e":[100,100]},{"t":40.9987516699133}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Fill 1","np":2,"cix":2,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151.000006150356,"st":0,"bm":0}],"markers":[]} -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import React, { memo, useState, useEffect, useRef, useCallback } from 'react'; 2 | import { Paragraph, ResetIcon, LogOutIcon, StopIcon, PlayIcon, SettingsIcon, ListIcon, IssueIcon, TickIcon, Dialog, Tooltip, IconButton, HelpIcon, Button, TextInputField, SideSheet, TagInput, Checkbox, Badge, Label, Textarea } from 'evergreen-ui'; 3 | import Swal from 'sweetalert2'; 4 | import moment from 'moment'; 5 | import isEqual from 'lodash/isEqual'; 6 | import Lottie from 'react-lottie-player'; 7 | import withReactContent from 'sweetalert2-react-content'; 8 | import JSON5 from 'json5'; 9 | 10 | import runningLottie from './14470-phone-running.json'; 11 | import robotLottie from './10178-c-bot.json'; 12 | import robotDizzyLottie from './13680-robot-call.json'; 13 | import loveLottie from './13682-heart.json'; 14 | 15 | const { isDev } = window; 16 | 17 | const electron = window.require('@electron/remote'); 18 | 19 | const { initInstautoDb, initInstauto, runBotNormalMode, runBotUnfollowAllUnknown, runBotUnfollowNonMutualFollowers, runBotUnfollowOldFollowed, runBotUnfollowUserList, runBotFollowUserList, cleanupInstauto, checkHaveCookies, deleteCookies, getInstautoData, runTestCode } = electron.require('./electron'); 20 | const { store: configStore, defaults: configDefaults } = electron.require('./store'); 21 | 22 | const ReactSwal = withReactContent(Swal); 23 | 24 | const cleanupAccounts = (accounts) => accounts.map(user => user.replace(/^@/g, '')); 25 | 26 | function safeSetConfig(key, val) { 27 | configStore.set(key, val !== undefined ? val : null); 28 | } 29 | 30 | 31 | function onTroubleshootingClick() { 32 | Swal.fire({ 33 | title: 'Troubleshooting', 34 | html: ` 35 | 42 | `, 43 | }); 44 | } 45 | 46 | const StatisticsBanner = memo(({ data: { numFollowedLastDay, numTotalFollowedUsers, numUnfollowedLastDay, numTotalUnfollowedUsers, numLikedLastDay, numTotalLikedPhotos } }) => { 47 | const headingStyle = { marginBottom: 5, color: '#7c3c21' }; 48 | const statStyle = { minWidth: 30, paddingRight: 5, fontWeight: 400, fontSize: 24, color: '#303960' }; 49 | return ( 50 |
51 |
52 |
Followed users
53 |
{numFollowedLastDay}
Last 24h
54 |
{numTotalFollowedUsers}
Total
55 |
56 | 57 |
58 |
Unfollowed users
59 |
{numUnfollowedLastDay}
Last 24h
60 |
{numTotalUnfollowedUsers}
Total
61 |
62 | 63 |
64 |
Liked photos
65 |
{numLikedLastDay}
Last 24h
66 |
{numTotalLikedPhotos}
Total
67 |
68 |
69 | ); 70 | }); 71 | 72 | const AdvancedSettings = memo(({ 73 | advancedSettings, onChange, dryRun, setDryRun, instantStart, setInstantStart, onClose, 74 | }) => { 75 | const [advancedSettingsTxt, setAdvancedSettingsTxt] = useState(); 76 | const [advancedSettingsParsed, setAdvancedSettingsParsed] = useState(advancedSettings); 77 | 78 | const onTextareaChange = useCallback((e) => { 79 | const { value } = e.target; 80 | setAdvancedSettingsTxt(value); 81 | try { 82 | setAdvancedSettingsParsed(JSON5.parse(value)); 83 | } catch (err) { 84 | setAdvancedSettingsParsed(); 85 | console.error(err); 86 | } 87 | }, []); 88 | 89 | const tooHighWarning = 'NOTE: setting this too high may cause Action Blocked'; 90 | const optsData = { 91 | dontUnfollowUntilDaysElapsed: { 92 | description: 'Automatically unfollow auto-followed users after this number of days', 93 | }, 94 | followUserMinFollowing: { 95 | description: 'Skip users who follow less users than this', 96 | }, 97 | followUserMinFollowers: { 98 | description: 'Skip users who have less followers than this', 99 | }, 100 | followUserMaxFollowers: { 101 | description: 'Skip users who have more followers than this', 102 | }, 103 | followUserMaxFollowing: { 104 | description: 'Skip users who are following more than this', 105 | }, 106 | followUserRatioMin: { 107 | description: 'Skip users that have a followers/following ratio lower than this', 108 | }, 109 | followUserRatioMax: { 110 | description: 'Skip users that have a followers/following ratio higher than this', 111 | }, 112 | maxFollowsPerHour: { 113 | description: `Limit follow and unfollow operations per hour. ${tooHighWarning}`, 114 | }, 115 | maxFollowsPerDay: { 116 | description: `Limit follow and unfollow operations over 24 hours. ${tooHighWarning}`, 117 | }, 118 | maxLikesPerUser: { 119 | description: 'Like up to this number of photos on each user\'s profile. Set to 0 to deactivate liking photos', 120 | }, 121 | enableFollowUnfollow: { 122 | description: 'Enable follow/unfollow users? (can be disabled if you only want to like photos)', 123 | }, 124 | maxLikesPerDay: { 125 | description: `Limit total photo likes per 24 hours. ${tooHighWarning}`, 126 | }, 127 | runAtHour: { 128 | description: 'Repeat at this hour (24hr based) every day', 129 | }, 130 | userAgent: { 131 | description: 'Set the browser\'s user agent to this value', 132 | }, 133 | }; 134 | 135 | const onResetClick = useCallback(() => { 136 | setAdvancedSettingsTxt(); 137 | setAdvancedSettingsParsed(advancedSettings); 138 | }, [advancedSettings]); 139 | 140 | const onSaveClick = useCallback(() => { 141 | if (!advancedSettingsParsed) return; 142 | 143 | onChange(advancedSettingsParsed); 144 | setAdvancedSettingsTxt(); 145 | 146 | onClose(); 147 | }, [advancedSettingsParsed, onChange, onClose]); 148 | 149 | const formatValue = (value) => (value ? String(value) : 'unset'); 150 | 151 | return ( 152 | <> 153 | 159 | 160 | {Object.entries(advancedSettingsParsed || advancedSettings).map(([key, value]) => { 161 | const defaultValue = configDefaults[key]; 162 | const hasChanged = !isEqual(defaultValue, value); 163 | 164 | return ( 165 |
166 | {key} 167 |   168 | {formatValue(value)} 169 | {hasChanged && ( 170 | <> 171 |   172 | default {formatValue(defaultValue)} 173 | 174 | )} 175 |
{optsData[key].description}
176 |
177 | ); 178 | })} 179 | 180 | 188 |