diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..1075cc1 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gunicorn --worker-class eventlet -w 1 app:app \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f679646 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +## Flask Simple Login without Extensions + +### [https://techmonger.github.io/10/flask-simple-authentication/](https://techmonger.github.io/10/flask-simple-authentication/) + +---------------------------------- + +[![image](https://user-images.githubusercontent.com/50515418/155890748-ba122dba-7104-4983-88db-8770e00d828d.png)](https://vixtest.herokuapp.com/signup/) + +## Getting Started + +- Install required packages `pip -r install requirements.txt` +- Run below command, To create new Database... + +``` +python + >>> from app import create_db + >>> create_db() +``` + +- or, `python create_db.py` + +------------------------------------------------- + +## Run application +`python app.py` + +- Create new account http://127.0.0.1:5000/signup +- Login account http://127.0.0.1:5000/login +- 🔥 Then Send Money to other Accounts. + +## For Automate Login + + cd vicks + python cracker.py diff --git a/__pycache__/app.cpython-39.pyc b/__pycache__/app.cpython-39.pyc new file mode 100644 index 0000000..2b57594 Binary files /dev/null and b/__pycache__/app.cpython-39.pyc differ diff --git a/app.py b/app.py new file mode 100644 index 0000000..3096bc1 --- /dev/null +++ b/app.py @@ -0,0 +1,259 @@ +""" +Simple login mechanism implemented with Flask and Flask-Sqlalchemy +Makes use of werkzeug.security for password hashing. + +1. Create new user with signup form. +2. Authenticate user with Login form +3. Send authorized user to home page + +https://techmonger.github.io/10/flask-simple-authentication/ +""" + +from flask import Flask, render_template, request, url_for, redirect, flash, \ +session, abort, send_from_directory +from flask_sqlalchemy import sqlalchemy, SQLAlchemy +from werkzeug.security import generate_password_hash, check_password_hash +from werkzeug.utils import secure_filename +import os + +# Change dbname here +db_name = "auth.db" + +app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_name}' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + +UPLOAD_FOLDER = 'static' +app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER + +# SECRET_KEY required for session, flash and Flask Sqlalchemy to work +app.config['SECRET_KEY'] = 'configure strong secret key here' + +db = SQLAlchemy(app) +# db.create_all() + +class User(db.Model): + uid = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(100), unique=True, nullable=False) + bio = db.Column(db.String(500), nullable=True) + dp_url = db.Column(db.String(600), nullable=True) + pass_hash = db.Column(db.String(100), nullable=False) + + def __repr__(self): + return '' % self.username + + +def create_db(): + """ # Execute this first time to create new db in current directory. """ + db.create_all() + + +@app.route('/static/') +def send_reels(filename): + return send_from_directory("static", filename) + + +@app.route("/signup/", methods=["GET", "POST"]) +def signup(): + # when someone signup, set amount as 0 in firebase + + """ + Implements signup functionality. Allows username and password for new user. + Hashes password with salt using werkzeug.security. + Stores username and hashed password inside database. + + Username should to be unique else raises sqlalchemy.exc.IntegrityError. + """ + + if request.method == "POST": + username = request.form['username'].strip() + password = request.form['password'].strip() + + bio = request.form['bio'] + print('=====>>> ', type(bio)) + if bio is None: + bio = 'hey...' + +# -------------------------------------- + + # dp_url = request.form['dp_url'].strip() + + file = request.files['files[]'] + filename = secure_filename(file.filename) + print('********--> ', (file.filename)) + + if filename == '': + loc = 'static/Profile_NULL.png' + else: + loc = os.path.join(app.config['UPLOAD_FOLDER'], filename) + file.save(loc) + + # saving image in firebase as binary base64 + from vicks import image_upload as fire + print('---------> ', loc) + obj = fire.Upload(username, loc) + obj.img2txt() + +# -------------------------------------- + + if not (username and password): + flash("Username or Password cannot be empty") + return redirect(url_for('signup')) + else: + username = username.strip() + password = password.strip() + + # Returns salted pwd hash in format : method$salt$hashedvalue + hashed_pwd = generate_password_hash(password, 'sha256') + # print(hashed_pwd) + + new_user = User(username=username, bio=bio, pass_hash=hashed_pwd, dp_url=loc) + db.session.add(new_user) + + try: + db.session.commit() + except sqlalchemy.exc.IntegrityError: + flash("Username {u} is not available.".format(u=username)) + return redirect(url_for('signup')) + + flash("User account has been created.") + return redirect(url_for("login")) + + return render_template("signup.html") + + +# @app.route("/", methods=["GET", "POST"]) +@app.route("/login/", methods=["GET", "POST"]) +def login(): + """ + Provides login functionality by rendering login form on get request. + On post checks password hash from db for given input username and password. + If hash matches redirects authorized user to home page else redirect to + login page with error message. + """ + + if request.method == "POST": + username = request.form['username'] + password = request.form['password'] + + if not (username and password): + flash("Username or Password cannot be empty.") + return redirect(url_for('login')) + else: + username = username.strip() + password = password.strip() + + user = User.query.filter_by(username=username).first() + + if user and check_password_hash(user.pass_hash, password): + session[username] = True + return redirect(url_for("user_home", username=username)) + else: + flash("Invalid username or password.") + + flash('''If your account has lost, + please signup again with same username, + your money has not lost yet.''') + + return render_template("login_form.html") + + +@app.route("/user/") +def user_home(username): + """ + Home page for validated users. + + """ + if not session.get(username): + abort(401) + + from vicks import image_upload as fire + obj = fire.Bank_Account(username) + + user = User.query.filter_by(username=username).first() + print('======>>> ', user.dp_url) + up_obj = fire.Upload(username, user.dp_url) + up_obj.txt2img() + + friend_list = fire.friends().keys() + return render_template("user_home.html", + username=username, + bio=user.bio, + friend_list=friend_list, + dp_url=user.dp_url, + disp = obj.display() + ) + + +@app.route("/account/", methods=["GET", "POST"]) +def user_account(username): + """ + Home page for validated users. + + """ + if not session.get(username): + abort(401) + + money = float(request.form['money']) + from vicks import image_upload as fire + + ''' + # flower as fire + + flower samjhi kya ? + fire hai mai... XD + + (firebase chatting feature will be add soon...) + ''' + + obj = fire.Bank_Account(username) + pay = request.form['pay'] + obj_pay = fire.Bank_Account(pay) + + if money>0: + obj_pay.deposit(money) + disp = obj.withdraw(money) + + flash(f''' + Paid Successfully + ''') + + else: + disp = obj.display() + flash("Amount should NOT be Negative number.") + + user = User.query.filter_by(username=username).first() + obj = fire.Upload(username, user.dp_url) + obj.txt2img() + + friend_list = fire.friends().keys() + return render_template("user_home.html", + username=username, + bio=user.bio, + friend_list=friend_list, + dp_url=user.dp_url, + disp = disp, + ) + + +@app.route("/logout/") +def logout(username): + """ Logout user and redirect to login page with success message.""" + session.pop(username, None) + flash("successfully logged out.") + return redirect(url_for('login')) + + +@app.route("/") +def index(): + return render_template('index.html') + + +@app.errorhandler(404) +def page_not_found(e): + e = 'Error 404, Page not Found' + return ( render_template('404.html', e=e), 404 ) + + +if __name__ == "__main__": + app.run(port=5000, debug=True) diff --git a/auth.db b/auth.db new file mode 100644 index 0000000..1e6e6e5 Binary files /dev/null and b/auth.db differ diff --git a/create_db.py b/create_db.py new file mode 100644 index 0000000..e735f3c --- /dev/null +++ b/create_db.py @@ -0,0 +1,5 @@ + +# to create `auth.db` file + +from app import create_db +create_db() \ No newline at end of file diff --git a/fireson.json b/fireson.json new file mode 100644 index 0000000..79d92a7 --- /dev/null +++ b/fireson.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "ideationology-4c639", + "private_key_id": "5806b97f02b35ecef648d4684bfd3436a7e114c8", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCf7mMeTZBpJylC\no8aavaZIw1eTAsdwxeuZVfRe84YKfkFlEoeR/dILyLMslRBOZgWJKBeOYf1oxB5e\nkMHABX+VoMII3V0l/tFjD2kCL/EJBFA2Zr0Q7HbtJGYSK3XBtJpsJgPzkgxIQJ7I\nCL8M6A3HshpQxQM10KGukcjoN+LNAzVnpzq7bFFoFcid7HZ7VKWxbKIqpTIPrAmU\n8mw4OpXiESZj+1SjURv0qw2zpk/VzydBdsmN9KCRuZuqTrcN+sfEcxD5Ve3l5BwX\nNeKy02DFAfaNhXFUGEUQJiR4yvwMS0Gh2GCy4JLJ/rBO5Kz9BGN3hu0gLVZQWRHo\ndf2K7BX5AgMBAAECggEAAfI3L4+3EaiB1odCq/Bh3SHPZ4ERpzwpVUjX++3PtEH8\nDrxOfQbPLwiGsaSwuZuBNr2Pp9JmcIdubS0qxmjquAnoQo5bC1LR/ngaCYZG0xrD\n1R2j8FhITDN0sITp3m0Rsf42bxjYYGq04+9DT+dk/4iZzGDRXK7IwOSSQs0nS+JY\nrYumoobXtRbbhXzlLWmN7WRuIrOTVfe4hn1NVEW8CLrZVrlmak8xTffh64csWG9z\nW2lJAjnGI0JSFIHo5HRhIPe8JTBwC1DBFrJLgdrG+lC3eQyGCu8V5+zTVs2QKxe/\nkI6PZSYON7i2ojLrhXOUGFyXvAIuoW/7QSSqPKYVAQKBgQDW6SCWyl1VkyU1AIDH\nrqMMuAKm0PiHsGtxlkMN0O5YCLnc8zIiK6QhsH76K3Jmjip2JSu3YJaK9OWJ+eCy\n9jFKwtdiw9XzUGF7e1rez5HjbsSHV38NMjWxkk9nGmB/M/4r25rQYOLmWunI0bjL\nQm/H+U+nHQFxdUytN7GgkKBiQQKBgQC+gkW9Z4QTIFrLCaAdID2bPQfoDD61wPrH\nHWVvjaMikz1Den/2sZUGu9imvZ6vduVwyzG8yXHeteFIJ4ZxwlAfUotu/ucbPr5d\nX92Ej9063AktzTf06xzjvSmiXQC58isrLwIIeAuuHEj0CUWm3bLER5XHLwPiaOVU\ncJefKgXVuQKBgERRxDxrhJRJvNBGoqnYCJlofd9OG1P3b5CidhqUStDNpVhqL4vR\nV9Il65fX6/xSQYlhc65OFE2EYNwmBZqezTi5DAOnwgIhkXvR0Sd30Sb99ZgY5pjp\nV0xl+LwMFJUbkDedDnAj/L3CNQPUN+zV5/coeHvlqqnI4mFGjT8/+tyBAoGBAIpB\nLm1zF0VuIJXiyWD5ydvEId3ELSpn/1bLPZcEWhS4eChlWUJlw7ocTvFLAUNjbMU7\noT/ZjZrLsc9UZ9xc4RqqI+iMcpmyIiLPdIpEgY+6qaqkmOxUSCX6XKGpDuLjHXL8\nbWRKAmf7vPHlXLfpglexf8AKna4M5AkwoMhwjcV5AoGAbw2b79fnqBBQPp3ex7yo\n0EShd4PlaXmZMByG+jgJELPhrJ0PZ90QZD7WYQGH8t8rWtMg0PdLURkekdMYgnql\nacA2ZecxBVbT9a6S4gcGENQPM8hSU6mdPKk2EVjaoHc8EHL1jtvXHnWorEu6nLR7\ncWvuO5yA7LjT7fbcGyPyFAQ=\n-----END PRIVATE KEY-----\n", + "client_email": "firebase-adminsdk-5hfwu@ideationology-4c639.iam.gserviceaccount.com", + "client_id": "109034743683577347554", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-5hfwu%40ideationology-4c639.iam.gserviceaccount.com" +} diff --git a/login_app.py b/login_app.py deleted file mode 100644 index 501834a..0000000 --- a/login_app.py +++ /dev/null @@ -1,137 +0,0 @@ -""" -Simple login mechanism implemented with Flask and Flask-Sqlalchemy -Makes use of werkzeug.security for password hashing. - -1. Create new user with signup form. -2. Authenticate user with Login form -3. Send authorized user to home page - -https://techmonger.github.io/10/flask-simple-authentication/ -""" -from flask import Flask, render_template, request, url_for, redirect, flash, \ -session, abort -from flask_sqlalchemy import sqlalchemy, SQLAlchemy -from werkzeug.security import generate_password_hash, check_password_hash - - -# Change dbname here -db_name = "auth.db" - -app = Flask(__name__) -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///{db}'.format(db=db_name) -app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False - - -# SECRET_KEY required for session, flash and Flask Sqlalchemy to work -app.config['SECRET_KEY'] = 'configure strong secret key here' - -db = SQLAlchemy(app) - - -class User(db.Model): - uid = db.Column(db.Integer, primary_key=True) - username = db.Column(db.String(100), unique=True, nullable=False) - pass_hash = db.Column(db.String(100), nullable=False) - - def __repr__(self): - return '' % self.username - - -def create_db(): - """ # Execute this first time to create new db in current directory. """ - db.create_all() - - -@app.route("/signup/", methods=["GET", "POST"]) -def signup(): - """ - Implements signup functionality. Allows username and password for new user. - Hashes password with salt using werkzeug.security. - Stores username and hashed password inside database. - - Username should to be unique else raises sqlalchemy.exc.IntegrityError. - """ - - if request.method == "POST": - username = request.form['username'] - password = request.form['password'] - - if not (username and password): - flash("Username or Password cannot be empty") - return redirect(url_for('signup')) - else: - username = username.strip() - password = password.strip() - - # Returns salted pwd hash in format : method$salt$hashedvalue - hashed_pwd = generate_password_hash(password, 'sha256') - - new_user = User(username=username, pass_hash=hashed_pwd) - db.session.add(new_user) - - try: - db.session.commit() - except sqlalchemy.exc.IntegrityError: - flash("Username {u} is not available.".format(u=username)) - return redirect(url_for('signup')) - - flash("User account has been created.") - return redirect(url_for("login")) - - return render_template("signup.html") - - -@app.route("/", methods=["GET", "POST"]) -@app.route("/login/", methods=["GET", "POST"]) -def login(): - """ - Provides login functionality by rendering login form on get request. - On post checks password hash from db for given input username and password. - If hash matches redirects authorized user to home page else redirect to - login page with error message. - """ - - if request.method == "POST": - username = request.form['username'] - password = request.form['password'] - - if not (username and password): - flash("Username or Password cannot be empty.") - return redirect(url_for('login')) - else: - username = username.strip() - password = password.strip() - - user = User.query.filter_by(username=username).first() - - if user and check_password_hash(user.pass_hash, password): - session[username] = True - return redirect(url_for("user_home", username=username)) - else: - flash("Invalid username or password.") - - return render_template("login_form.html") - - -@app.route("/user//") -def user_home(username): - """ - Home page for validated users. - - """ - if not session.get(username): - abort(401) - - return render_template("user_home.html", username=username) - - -@app.route("/logout/") -def logout(username): - """ Logout user and redirect to login page with success message.""" - session.pop(username, None) - flash("successfully logged out.") - return redirect(url_for('login')) - - -if __name__ == "__main__": - app.run(port=5000, debug=True) diff --git a/readme.md b/readme.md deleted file mode 100644 index e06b48d..0000000 --- a/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -## Flask Simple Login without Extensions - -### [https://techmonger.github.io/10/flask-simple-authentication/]("https://techmonger.github.io/10/flask-simple-authentication/") - -## Getting Started - -- Install required packages `pip -r install requirements.txt` -- Create empty database -``` -cd flask-simple-login/ -python ->>> from login_app import create_db ->>> create_db() -``` - -- Run application `python login_app.py` -- Create new account http://127.0.0.1:5000/signup -- Login account http://127.0.0.1:5000/login diff --git a/requirements.txt b/requirements.txt index c2874d9..26e64f5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,9 @@ Flask==0.12.2 Flask-SQLAlchemy==2.3.2 itsdangerous==0.24 Jinja2==2.10 -MarkupSafe==1.0 SQLAlchemy==1.1.15 Werkzeug==0.13 +gunicorn==20.1.0 +eventlet==0.30.2 +markupsafe==2.0.1 +firebase_admin \ No newline at end of file diff --git a/static/Annotation_2021-01-01_113155.png b/static/Annotation_2021-01-01_113155.png new file mode 100644 index 0000000..8646590 Binary files /dev/null and b/static/Annotation_2021-01-01_113155.png differ diff --git a/static/Profile_NULL.png b/static/Profile_NULL.png new file mode 100644 index 0000000..c7bb58e Binary files /dev/null and b/static/Profile_NULL.png differ diff --git a/static/WhatsApp_Image_2021-01-27_at_11.39.26.jpeg b/static/WhatsApp_Image_2021-01-27_at_11.39.26.jpeg new file mode 100644 index 0000000..c6759c3 Binary files /dev/null and b/static/WhatsApp_Image_2021-01-27_at_11.39.26.jpeg differ diff --git a/static/background.jpg b/static/background.jpg new file mode 100644 index 0000000..3da5daf Binary files /dev/null and b/static/background.jpg differ diff --git a/static/gillu.jpg b/static/gillu.jpg new file mode 100644 index 0000000..8d2cb7c Binary files /dev/null and b/static/gillu.jpg differ diff --git a/static/photo.jpg b/static/photo.jpg new file mode 100644 index 0000000..72213ea Binary files /dev/null and b/static/photo.jpg differ diff --git a/static/submit.png b/static/submit.png new file mode 100644 index 0000000..e93b60a Binary files /dev/null and b/static/submit.png differ diff --git a/static/vicky.jpg b/static/vicky.jpg new file mode 100644 index 0000000..03f9f2c Binary files /dev/null and b/static/vicky.jpg differ diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..8ae9998 --- /dev/null +++ b/templates/404.html @@ -0,0 +1,15 @@ + + + + {{ username }} - Home + + + +

{{e}}

+ + + Go to Home + + + + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..2c72a5b --- /dev/null +++ b/templates/index.html @@ -0,0 +1,41 @@ + + + + Login + + + +

Home

+ +

+ Go to Pages... +

+ + New User ? +
+ + Signup here + +

+ + Already have Account ? +
+ + Login here + +

+ + Are you Curious ? +
+ + Source Code + + + here + + +

+ + + diff --git a/templates/login_form.html b/templates/login_form.html index d0bef1f..c40f873 100644 --- a/templates/login_form.html +++ b/templates/login_form.html @@ -1,23 +1,41 @@ - - Login - - -

Login

-
- Username : - Password : - -
- {% with messages = get_flashed_messages() %} - {% if messages %} -
    - {% for message in messages %} -
  • {{ message }}
  • - {% endfor %} -
- {% endif %} - {% endwith %} - + + Login + + + +

Login

+ +
+ Username : +

+ Password : +

+ +
+ + {% with messages = get_flashed_messages() %} + {% if messages %} +
    + {% for message in messages %} +
  • {{ message }}
  • + {% endfor %} +
+ {% endif %} + {% endwith %} + +
+

+ New User ? +
+ + Signup here + +

+ + + Go to Home + + diff --git a/templates/signup.html b/templates/signup.html index 9f56724..875c462 100644 --- a/templates/signup.html +++ b/templates/signup.html @@ -1,23 +1,84 @@ - - Sign Up - - -

Sign Up

-
- Username : - Password : - -
- {% with messages = get_flashed_messages() %} - {% if messages %} -
    - {% for message in messages %} -
  • {{ message }}
  • - {% endfor %} -
- {% endif %} - {% endwith %} - + + Sign Up + + + + + + + + + + +
+
+
+ +
+
+
+ + diff --git a/templates/user_home.html b/templates/user_home.html index 698b558..348e541 100644 --- a/templates/user_home.html +++ b/templates/user_home.html @@ -1,10 +1,107 @@ - - {{ username.title() }} - Home - - -

Hello {{username.title()}}

-

Logout

- + + {{ username }} - Home + + + + + + +

Hello {{username}}

+

Bio : {{bio}}

+

Account Balance : {{disp}}

+ + {% with messages = get_flashed_messages() %} + {% if messages %} + + {% endif %} + {% endwith %} + +
+ Enter Amount : +

+ Send to Username : +

+ +
+ + + +
+ Welcome +
+ +
+ +
+ + + + Source Article + + +

+ + +
    + {% for i in friend_list %} +
  • {{ i }}
  • + {% endfor %} +
+ + + + + +

+ + Logout + +

+ + + Go to Home + + + diff --git a/vicks/__pycache__/Bank_Class.cpython-39.pyc b/vicks/__pycache__/Bank_Class.cpython-39.pyc new file mode 100644 index 0000000..b0f51ec Binary files /dev/null and b/vicks/__pycache__/Bank_Class.cpython-39.pyc differ diff --git a/vicks/__pycache__/Bank_account.cpython-39.pyc b/vicks/__pycache__/Bank_account.cpython-39.pyc new file mode 100644 index 0000000..dd481fd Binary files /dev/null and b/vicks/__pycache__/Bank_account.cpython-39.pyc differ diff --git a/vicks/__pycache__/account.cpython-39.pyc b/vicks/__pycache__/account.cpython-39.pyc new file mode 100644 index 0000000..1c11f75 Binary files /dev/null and b/vicks/__pycache__/account.cpython-39.pyc differ diff --git a/vicks/__pycache__/flower.cpython-39.pyc b/vicks/__pycache__/flower.cpython-39.pyc new file mode 100644 index 0000000..d12d09d Binary files /dev/null and b/vicks/__pycache__/flower.cpython-39.pyc differ diff --git a/vicks/__pycache__/image_upload.cpython-39.pyc b/vicks/__pycache__/image_upload.cpython-39.pyc new file mode 100644 index 0000000..3cbb940 Binary files /dev/null and b/vicks/__pycache__/image_upload.cpython-39.pyc differ diff --git a/vicks/binary_image.py b/vicks/binary_image.py new file mode 100644 index 0000000..c15b26d --- /dev/null +++ b/vicks/binary_image.py @@ -0,0 +1,23 @@ + +import base64 + +def write_image(): + with open("gillu.jpg", "rb") as image2string: + converted_string = base64.b64encode(image2string.read()) + print(converted_string, type(converted_string)) + + with open('gillu.txt', "wb") as file: + file.write(converted_string) + + +def read_image(): + file = open('gillu.txt', 'rb') + byte = file.read() + file.close() + + decodeit = open('gillu.jpeg', 'wb') + decodeit.write(base64.b64decode((byte))) + decodeit.close() + +write_image() +read_image() \ No newline at end of file diff --git a/vicks/chromedriver.exe b/vicks/chromedriver.exe new file mode 100644 index 0000000..57070d5 Binary files /dev/null and b/vicks/chromedriver.exe differ diff --git a/vicks/cracker.py b/vicks/cracker.py new file mode 100644 index 0000000..e499327 --- /dev/null +++ b/vicks/cracker.py @@ -0,0 +1,123 @@ + +# https://stackoverflow.com/a/69875984/11493297 +from selenium.webdriver.common.by import By + +from selenium import webdriver +import time, random + +Email = "bot_" +passw = str(random.randint(0, 50)) + +print(f''' +>>>> passw : {passw} +''') + +add_Email = [] +chance = counter = 0 + +web = webdriver.Chrome() + +def fun_signup(Email): + # web.get('http://127.0.0.1:5000/signup/') + web.get('https://vixtest.herokuapp.com/signup/') + + first = web.find_element(By.XPATH, '//*[@id="username"]') + first.send_keys(Email) + + last = web.find_element(By.XPATH, '//*[@id="password"]') + last.send_keys(passw) + + bio = web.find_element(By.XPATH, '//*[@id="bio"]') + bio.send_keys(passw, ' has been cracked.') + + Submit = web.find_element(By.XPATH, '//*[@id="signup"]/input[3]') + Submit.click() + + try: + check = web.find_element(By.CSS_SELECTOR, '.flashes').text + if check.split()[0] == 'Username': + + print(f''' + >>>> {check} + ''') + + global counter + counter += 1 + Email += str(counter) + + fun_signup(Email) + add_Email.append(Email) + return add_Email + + else: + add_Email.append(Email) + return add_Email + except: + pass + + +def fun_login(passw): + # web.get('http://127.0.0.1:5000/login/') + web.get('https://vixtest.herokuapp.com/login/') + + first = web.find_element(By.XPATH, '//*[@id="username"]') + first.send_keys(Email) + + last = web.find_element(By.XPATH, '//*[@id="password"]') + last.send_keys(passw) + + Submit = web.find_element(By.XPATH, '//*[@id="submit"]') + Submit.click() + + try: + check = web.find_element(By.CSS_SELECTOR, '.flashes') + if check.text == 'Invalid username or password.': + + print(f''' + >>>> {check.text} + ''') + + guessed_passw = str(int(passw) + 1) + + # GAME... + # guessed_passw = input('Enter guessed Password : ') + # if int(guessed_passw) > int(passw): + + # print('Password is Greater than Guessed...') + # chance += 1 + + # elif int(guessed_passw) < int(passw): + # print('Password is Lesser than Guessed...') + # chance += 1 + + # if int(guessed_passw) == int(passw): + # print('Guessed Password is Correct...') + # print('>>>>>>> ', chance) + + fun_login(guessed_passw) + except: + pass + + try: + check = web.find_element(By.CSS_SELECTOR, '.welcome').text + if check == 'Welcome': + + input(''' + >>> Press Enter to Logout... + ''') + + logout = web.find_element(By.XPATH, '/html/body/p/a') + logout.click() + except: + pass + + +# to automate signup +time.sleep(2) +Email = fun_signup(Email)[0] + +# to automate login +passw = "0" +# Email = "bot_" +time.sleep(2) +fun_login(passw) diff --git a/vicks/encode.txt b/vicks/encode.txt new file mode 100644 index 0000000..27613a7 --- /dev/null +++ b/vicks/encode.txt @@ -0,0 +1 @@ +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cHGzW/HJWcNn96mp8fX3VqFEjBQQEyNXVtcKasn380owZM5SXl2fejh07du0vHAAAwMHqPAAahqH4+Hh9+OGHWrdundq1a2e3vW/fvnJ3d1daWpo5duDAAR09elQRERGSpIiICO3du9dutm5qaqp8fX3VvXt3s+bqfZTVlO3Dw8NDffv2taspLS1VWlqaWfNLnp6e8vX1tbsBAADUN3V+DmBcXJyWL1+ujz/+WE2aNDHP2fPz81OjRo3k5+enSZMmKSEhQf7+/vL19dWUKVMUERGhAQMGSJKGDx+u7t2765FHHtG8efOUnZ2tmTNnKi4uTp6enpKkJ598UosXL9a0adP06KOPat26dfrggw+0evXPs2cTEhIUGxurfv36qX///lqwYIEKCgo0ceLEun5bAAAA6kydB8A333xTkjRkyBC78XfeeUcTJkyQJL322mtycXHRqFGjVFhYqKioKL3xxhtmraurq1atWqXJkycrIiJC3t7eio2N1YsvvmjWtGvXTqtXr9bTTz+thQsXqnXr1vrLX/6iqKgos2bMmDE6ffq0kpKSlJ2drd69eyslJaXcxBAAAICGxOHrANZnzrgOoCR990p0HXYCAED9wjqATrAOIAAAAOoWARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMAbAB2vdDXrmx4+cuKn75TmUey637hgAAgFMhADZAi9cdKjf2n/+3S6v2nFTMks0O6AgAADgTAqBF7Dya6+gWAACAkyAAWsCWw2cc3QIAAHAiBEAL+Hx/jqNbAAAAToQACAAAYDEEQAv4qajE7v7ZgiIHdQIAAJwBAdACknccs7v/8uqvHdQJAABwBgTABsiQUeX2b3LO11EnAADAGREALWhvBQtFAwAA6yAANnA/Xih0dAsAAMDJEAAboAPZP3/F+x9/3ebATgAAgDMiADZA3/140fz565P5DuwEAAA4IwIgAACAxRAALWruZywFAwCAVREALeqtTd86ugUAAOAgBMAGLCu76vP/8i8V11EnAADAmRAAG7B5KQcc3QIAAHBCBEALyzrJFUEAALAiAmADti7rVJXbP/jFNYIBAIA1EAABAAAshgD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 \ No newline at end of file diff --git a/vicks/fireson.json b/vicks/fireson.json new file mode 100644 index 0000000..79d92a7 --- /dev/null +++ b/vicks/fireson.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "ideationology-4c639", + "private_key_id": "5806b97f02b35ecef648d4684bfd3436a7e114c8", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCf7mMeTZBpJylC\no8aavaZIw1eTAsdwxeuZVfRe84YKfkFlEoeR/dILyLMslRBOZgWJKBeOYf1oxB5e\nkMHABX+VoMII3V0l/tFjD2kCL/EJBFA2Zr0Q7HbtJGYSK3XBtJpsJgPzkgxIQJ7I\nCL8M6A3HshpQxQM10KGukcjoN+LNAzVnpzq7bFFoFcid7HZ7VKWxbKIqpTIPrAmU\n8mw4OpXiESZj+1SjURv0qw2zpk/VzydBdsmN9KCRuZuqTrcN+sfEcxD5Ve3l5BwX\nNeKy02DFAfaNhXFUGEUQJiR4yvwMS0Gh2GCy4JLJ/rBO5Kz9BGN3hu0gLVZQWRHo\ndf2K7BX5AgMBAAECggEAAfI3L4+3EaiB1odCq/Bh3SHPZ4ERpzwpVUjX++3PtEH8\nDrxOfQbPLwiGsaSwuZuBNr2Pp9JmcIdubS0qxmjquAnoQo5bC1LR/ngaCYZG0xrD\n1R2j8FhITDN0sITp3m0Rsf42bxjYYGq04+9DT+dk/4iZzGDRXK7IwOSSQs0nS+JY\nrYumoobXtRbbhXzlLWmN7WRuIrOTVfe4hn1NVEW8CLrZVrlmak8xTffh64csWG9z\nW2lJAjnGI0JSFIHo5HRhIPe8JTBwC1DBFrJLgdrG+lC3eQyGCu8V5+zTVs2QKxe/\nkI6PZSYON7i2ojLrhXOUGFyXvAIuoW/7QSSqPKYVAQKBgQDW6SCWyl1VkyU1AIDH\nrqMMuAKm0PiHsGtxlkMN0O5YCLnc8zIiK6QhsH76K3Jmjip2JSu3YJaK9OWJ+eCy\n9jFKwtdiw9XzUGF7e1rez5HjbsSHV38NMjWxkk9nGmB/M/4r25rQYOLmWunI0bjL\nQm/H+U+nHQFxdUytN7GgkKBiQQKBgQC+gkW9Z4QTIFrLCaAdID2bPQfoDD61wPrH\nHWVvjaMikz1Den/2sZUGu9imvZ6vduVwyzG8yXHeteFIJ4ZxwlAfUotu/ucbPr5d\nX92Ej9063AktzTf06xzjvSmiXQC58isrLwIIeAuuHEj0CUWm3bLER5XHLwPiaOVU\ncJefKgXVuQKBgERRxDxrhJRJvNBGoqnYCJlofd9OG1P3b5CidhqUStDNpVhqL4vR\nV9Il65fX6/xSQYlhc65OFE2EYNwmBZqezTi5DAOnwgIhkXvR0Sd30Sb99ZgY5pjp\nV0xl+LwMFJUbkDedDnAj/L3CNQPUN+zV5/coeHvlqqnI4mFGjT8/+tyBAoGBAIpB\nLm1zF0VuIJXiyWD5ydvEId3ELSpn/1bLPZcEWhS4eChlWUJlw7ocTvFLAUNjbMU7\noT/ZjZrLsc9UZ9xc4RqqI+iMcpmyIiLPdIpEgY+6qaqkmOxUSCX6XKGpDuLjHXL8\nbWRKAmf7vPHlXLfpglexf8AKna4M5AkwoMhwjcV5AoGAbw2b79fnqBBQPp3ex7yo\n0EShd4PlaXmZMByG+jgJELPhrJ0PZ90QZD7WYQGH8t8rWtMg0PdLURkekdMYgnql\nacA2ZecxBVbT9a6S4gcGENQPM8hSU6mdPKk2EVjaoHc8EHL1jtvXHnWorEu6nLR7\ncWvuO5yA7LjT7fbcGyPyFAQ=\n-----END PRIVATE KEY-----\n", + "client_email": "firebase-adminsdk-5hfwu@ideationology-4c639.iam.gserviceaccount.com", + "client_id": "109034743683577347554", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-5hfwu%40ideationology-4c639.iam.gserviceaccount.com" +} diff --git a/vicks/flower.py b/vicks/flower.py new file mode 100644 index 0000000..82f61a1 --- /dev/null +++ b/vicks/flower.py @@ -0,0 +1,46 @@ + +from firebase_admin import db +from firebase_admin import credentials +cred = credentials.Certificate('vicks/fireson.json') + +url = 'https://ideationology-4c639-default-rtdb.asia-southeast1.firebasedatabase.app/' +path = {'databaseURL' : url} + +import firebase_admin +if not firebase_admin._apps: + firebase_admin.initialize_app(cred, path) + + +class Bank_Account: + def __init__(self, username): + self.username = db.reference(f'Bank_Account/User/{username}') + self.balance = self.username.get() + + if self.balance is None: + self.username.set(1000) + + def deposit(self, amount): + self.balance = self.username.get() + self.balance += amount + + self.username.set(self.balance) + return self.display() + + def withdraw(self, amount): + self.balance = self.username.get() + + if self.balance>=amount: + self.balance-=amount + + self.username.set(self.balance) + return self.display() + + def display(self): + return self.username.get() + + +# obj = Bank_Account('firebase', 50) +# d = obj.deposit(1000) +# w = obj.withdraw(100) +# s = obj.display() +# print(s) diff --git a/vicks/gillu.jpeg b/vicks/gillu.jpeg new file mode 100644 index 0000000..8d2cb7c Binary files /dev/null and b/vicks/gillu.jpeg differ diff --git a/vicks/gillu.jpg b/vicks/gillu.jpg new file mode 100644 index 0000000..8d2cb7c Binary files /dev/null and b/vicks/gillu.jpg differ diff --git a/vicks/gillu.txt b/vicks/gillu.txt new file mode 100644 index 0000000..e306a38 --- /dev/null +++ b/vicks/gillu.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/vicks/ideationology-4c639-default-rtdb-export.json b/vicks/ideationology-4c639-default-rtdb-export.json new file mode 100644 index 0000000..4aa9239 --- /dev/null +++ b/vicks/ideationology-4c639-default-rtdb-export.json @@ -0,0 +1,25 @@ +{ + "Bank_Account" : { + "User" : { + "Bunga" : 1040.0, + "Garima" : 1770.0, + "K" : 999.0, + "Unga" : 900.0, + "Ungi" : 890.0, + "a" : 925.0, + "e" : 2111.0, + "f" : 1109.0, + "i" : 415.0, + "imvickykumar" : 525.0, + "imvickykumar999" : 599.6, + "j" : 555.0, + "jaj" : 1600.0, + "k" : 1100.0, + "mahi" : 300.0, + "mahipal" : 1050.4, + "mahipal " : 1100.0, + "pndychrg" : 900.0, + "t" : 1151.0 + } + } +} diff --git a/vicks/image_upload.py b/vicks/image_upload.py new file mode 100644 index 0000000..030a091 --- /dev/null +++ b/vicks/image_upload.py @@ -0,0 +1,90 @@ + +from firebase_admin import db +from firebase_admin import credentials +import base64 + + +cred = credentials.Certificate('fireson.json') +url = 'https://ideationology-4c639-default-rtdb.asia-southeast1.firebasedatabase.app/' +path = {'databaseURL' : url} + + +import firebase_admin +if not firebase_admin._apps: + firebase_admin.initialize_app(cred, path) + +def friends(): + return db.reference(f'Upload/Account').get() + +class Bank_Account: + def __init__(self, username): + self.username = db.reference(f'Upload/Account/{username}/Balance') + self.balance = self.username.get() + + if self.balance is None: + self.username.set(1000) + + + def deposit(self, amount): + self.balance = self.username.get() + self.balance += amount + + self.username.set(self.balance) + return self.display() + + + def withdraw(self, amount): + self.balance = self.username.get() + + if self.balance>=amount: + self.balance-=amount + + self.username.set(self.balance) + return self.display() + + + def display(self): + return self.username.get() + + +class Upload(): + def __init__(self, username, img): + self.username = db.reference(f'Upload/Account/{username}/Image') + self.img = img + self.path = self.username.get() + # print(self.path) + + if self.path is None: + self.username.set('Welcome') + + + def img2txt(self): + with open(f"{self.img}", "rb") as image2string: + converted_string = base64.b64encode(image2string.read()) + + self.username.set(converted_string.decode('utf-8')) # save image + + + def txt2img(self): + byte = self.username.get() # fetch image + + decodeit = open(f'{self.img}', 'wb') + decodeit.write(base64.b64decode(byte)) + decodeit.close() + + +# ------------------------------------------------ + + +# user = ['Vicky Kumar', 'firebase', ] + +# obj = Bank_Account(user[1]) +# obj.deposit(1000) +# obj.withdraw(100) +# s = obj.display() +# print(s) + + +# up_obj = Upload(user[0], 'vicky.jpg') +# up_obj.img2txt() +# up_obj.txt2img() diff --git a/vicks/img2txt.txt b/vicks/img2txt.txt new file mode 100644 index 0000000..27613a7 --- /dev/null +++ b/vicks/img2txt.txt @@ -0,0 +1 @@ +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cHGzW/HJWcNn96mp8fX3VqFEjBQQEyNXVtcKasn380owZM5SXl2fejh07du0vHAAAwMHqPAAahqH4+Hh9+OGHWrdundq1a2e3vW/fvnJ3d1daWpo5duDAAR09elQRERGSpIiICO3du9dutm5qaqp8fX3VvXt3s+bqfZTVlO3Dw8NDffv2taspLS1VWlqaWfNLnp6e8vX1tbsBAADUN3V+DmBcXJyWL1+ujz/+WE2aNDHP2fPz81OjRo3k5+enSZMmKSEhQf7+/vL19dWUKVMUERGhAQMGSJKGDx+u7t2765FHHtG8efOUnZ2tmTNnKi4uTp6enpKkJ598UosXL9a0adP06KOPat26dfrggw+0evXPs2cTEhIUGxurfv36qX///lqwYIEKCgo0ceLEun5bAAAA6kydB8A333xTkjRkyBC78XfeeUcTJkyQJL322mtycXHRqFGjVFhYqKioKL3xxhtmraurq1atWqXJkycrIiJC3t7eio2N1YsvvmjWtGvXTqtXr9bTTz+thQsXqnXr1vrLX/6iqKgos2bMmDE6ffq0kpKSlJ2drd69eyslJaXcxBAAAICGxOHrANZnzrgOoCR990p0HXYCAED9wjqATrAOIAAAAOoWARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMAbAB2vdDXrmx4+cuKn75TmUey637hgAAgFMhADZAi9cdKjf2n/+3S6v2nFTMks0O6AgAADgTAqBF7Dya6+gWAACAkyAAWsCWw2cc3QIAAHAiBEAL+Hx/jqNbAAAAToQACAAAYDEEQAv4qajE7v7ZgiIHdQIAAJwBAdACknccs7v/8uqvHdQJAABwBgTABsiQUeX2b3LO11EnAADAGREALWhvBQtFAwAA6yAANnA/Xih0dAsAAMDJEAAboAPZP3/F+x9/3ebATgAAgDMiADZA3/140fz565P5DuwEAAA4IwIgAACAxRAALWruZywFAwCAVREALeqtTd86ugUAAOAgBMAGLCu76vP/8i8V11EnAADAmRAAG7B5KQcc3QIAAHBCBEALyzrJFUEAALAiAmADti7rVJXbP/jFNYIBAIA1EAABAAAshgDYQFU3AQQAAFgXAbCBmrZyT7U1J3J/qoNOAACAsyEANlCGUX3NlsM/3vhGAACA06nzALhp0ybde++9atWqlWw2mz766CO77YZhKCkpSS1btlSjRo0UGRmpgwcP2tWcPXtW48aNk6+vr5o2bapJkybpwoULdjV79uzR7bffLi8vL4WEhGjevHnlelmxYoW6du0qLy8v9ejRQ5999lmtv15HuVh02dEtAAAAJ1XnAbCgoEC9evXSkiVLKtw+b948LVq0SEuXLtXWrVvl7e2tqKgoXbp0yawZN26c9u/fr9TUVK1atUqbNm3SE088YW7Pz8/X8OHD1bZtW2VkZGj+/PmaPXu23n77bbNmy5YteuihhzRp0iTt2rVLMTExiomJ0b59+27ci69DF4tKHN0CAABwUjbDqMmXhTfoyW02ffjhh4qJiZF05ehfq1at9Mwzz+jZZ5+VJOXl5SkoKEjLli3T2LFj9fXXX6t79+7avn27+vXrJ0lKSUnRyJEjdfz4cbVq1UpvvvmmXnjhBWVnZ8vDw0OSlJiYqI8++khZWVmSpDFjxqigoECrVq0y+xkwYIB69+6tpUuX1qj//Px8+fn5KS8vT76+vrX1ttRIaOLqWtnPd69E18p+AACoLxz5+e0snOocwCNHjig7O1uRkZHmmJ+fn8LDw5Weni5JSk9PV9OmTc3wJ0mRkZFycXHR1q1bzZrBgweb4U+SoqKidODAAZ07d86sufp5ymrKnqcihYWFys/Pt7vVd2cLihzdAgAAqGNOFQCzs7MlSUFBQXbjQUFB5rbs7GwFBgbabXdzc5O/v79dTUX7uPo5Kqsp216RuXPnys/Pz7yFhIRc60t0OpdLSx3dAgAAqGNOFQCd3YwZM5SXl2fejh2r/1fS2PHdOUe3AAAA6phTBcDg4GBJUk5Ojt14Tk6OuS04OFinTtlf4uzy5cs6e/asXU1F+7j6OSqrKdteEU9PT/n6+trd6ruarBcIAAAaFqcKgO3atVNwcLDS0tLMsfz8fG3dulURERGSpIiICOXm5iojI8OsWbdunUpLSxUeHm7WbNq0ScXFxWZNamqqunTpombNmpk1Vz9PWU3Z81iFA+cAAQAAB6nzAHjhwgVlZmYqMzNT0pWJH5mZmTp69KhsNpumTp2qOXPm6JNPPtHevXs1fvx4tWrVypwp3K1bN40YMUKPP/64tm3bps2bNys+Pl5jx45Vq1atJEkPP/ywPDw8NGnSJO3fv1/JyclauHChEhISzD6eeuoppaSk6NVXX1VWVpZmz56tHTt2KD4+vq7fEocqKCrR1yfr/2QWAABQc3W+DMyGDRs0dOjQcuOxsbFatmyZDMPQrFmz9Pbbbys3N1eDBg3SG2+8oc6dO5u1Z8+eVXx8vD799FO5uLho1KhRWrRokXx8fMyaPXv2KC4uTtu3b1dAQICmTJmi6dOn2z3nihUrNHPmTH333Xfq1KmT5s2bp5EjR9b4tTSEZWDKsBwMAMAqWAbGwesA1ncNKQD+NbafhnULqr4QAIB6jgDoZOcAwnEmvbtDO49WPyO4pNTQ1m9/5FJzAADUYwRAmO5/Y0u1NX/94luNeftLjf/rtjroCAAA3AgEQFyTP3525VJ6O75n/UAAAOorAiBq7Juc83b3OX0UAID6iQCIGvnxQqGGv7bJbuxk3iUHdQMAAK4HARB2vjpR8ZqAqV/llBt7b+v3N7odAABwAxAAYWfkon+VG9v0zWkl/mNvufH3t9X/ayEDAGBFBEBU65PdJyoc/7GgqI47AQAAtYEACAAAYDEEQJTzty+O1Lh23w95N7ATAABwIxAAUc6Lq77S8XMXzfulpZUv95J5LLcOOgIAALWJAIgKLfjnQRVeLtG2I2d1+kJhpXWsBAgAQP3j5ugG4JxWZhzXyozj1dYtSP1GjwxoWwcdAQCA2sIRQFwXZgIDAFD/EABxw+z47qye/J8Mu/MJAQCA4/EVMG6Y0UvTJUlnLhRq5eSBDu4GAACU4QggrltJFbOEJWnH9+e0Zu/JOuoGAABUhwCI67Yo7WC5sf0n7NcHnPzeTn19suLrDAMAgLpFAMR1W1hBAIxe9EUFY+WvMwwAAOoeARC17p3NFV9JpJpvigEAQB0hAKLW/eHTryrddujUhTrsBAAAVIQAiFpx/lJxjeqmrdxd4fiWw2eUnXdJhsFhQgAAbjSWgUGt2HL4R0XdHFxtgLtYVFJubNM3pzX+b9skSQE+Htr+QqRsNtsN6RMAAHAEELWkbIbv1yfPV1mXlV1+e1n4k6QzF4r0U3H5kAgAAGoPARC1YsE/r8wE/lslE0Aqc+ZCYbmxosultdITAACoGAEQtWplxvFrqu835581GgMAALWHAIg6l/pVTpXbL5camr5yTx11AwCA9RAAUece//92SJLe2/p9pTXJO45Vum351qN6LfUbvbHhULWXoQMAAOUxCxi1JjRxdY1rCy+X6IUP91VZc6m4RF7urnZjdy/8l90l5VZmHNe6Z4ZcU58AAFgdRwDhEAWF1c/0PX/pst39zGO55a4n/O3pglrtCwAAKyAAwiH6vJRabU3Yy/aTQWKWbK6wbvt3Z2ulJwAArIIAiHrvgaXp5cbKzg2sbmHqgsLL2vdDnnYdPacth8/ckP4AAHA2nAMIp3b+UrGaeLlXevSvTNHlUnm4Xfn/maeTM/Xhrh/Mbf8xoI3mxPSo8HE3z1prd/+eni21+OE+19k1AADOjSOAcGrT/35lOZjMY7lV1nWeuUaSdOr8JbvwJ0n/++VRhSauVt5F++sVbzlU/ojfqj0n9WMFi1OX6fj8ZwpNXK3QxNU1vv4xAADOhgAIp5Z++Mcazy5OSM5U/5fTKt3e68XP7e4//JetFdb1rWQh6tDE1bp81bIzPWZ/rtyLRTXqDQAAZ0IAhFM7d7HmR9n+8YsjfxUpC5OzP9lfZd3FIvsZyI8u215hXe8XUytdi7C68w+vrjt9vvKjjgAA1DYCICzn8OkLWrbluyprHv7zz0cHCwova13WqUprOzz/mV0INAxDoYmr1W7Gla+Lv/+x8qVqlqw/pHYzPlPYy/9UaOJqXSqufnkcAACuFwEQljPs1Y3V1lx9zuEvJ4pUpMPzn0m6snh1uxmf2W27Y/4GfZxZ/uhkaOJqzV97wG6s6+9TKn2Oosul2ns8r0YhMfdikRavO6hzBXxFDQAojwAIVCLuvZ3XVH+uoKjSAPfU+5nqN+fntQ9vn7eu0v2EJq4u9/Vx6lc56jxzje5d/IW6/j6l0iOLcct3KjRxtXq/mKo/ff6Nbn0pVT8VVRwYDcNQ/qViPbpsuz7ZfYKjjwBgITajpicqoZz8/Hz5+fkpLy9Pvr6+dfrc13LZNfx6vxvcXm9t+rbW9rf1+WFydbGpXyUTTa6W9dIISVUfFfx/Qzpo2oiukqr+m4ju0VJLxv28vE1pqaH2z39WYe13r0SbPxuGUe6IpiQNaO+v95+IKP/YMwUKaOKp7LyfVFxiqFvLuv33AgBqwpGf387C8gFwyZIlmj9/vrKzs9WrVy+9/vrr6t+/f40eSwCEM8h6aYSeXbFbq/acrLLupftu1iMRoZKq//spC4FV1WXMjFRzH0/zfmW1u35/l5p5e9iNXSq+ci3ov+88LknycndR1kt329UYhqEN35xW+wBvtfRrZC71s/X5YQry9Sr3POcKirT/RL4GdQqo8rX9eKFQTbzc9XRyplbvPamdv79L/r/o75d9fPntWQ1o7y+bzVblvgHUDwRAiwfA5ORkjR8/XkuXLlV4eLgWLFigFStW6MCBAwoMDKz28XXxB2QYRoUfOgRA/BqbE+/Uba9U/vXztSoLT9X9PQb5emrTtKFasv6wFqUdrHa/R+aOrPDIY5m/T45Q56AmauLlriXrD5U7l9LVxaavXozS62mHtHj9IX34/wbq1jbNqu3z0Mt3y8315zNjKjsCenWo/epEvkYu+pck6b9G9dD0v+/VrHu7a+Jt7co9LuGDTHVo4aP/GNBWvf5wZVmiq4+4XqvSUkPFpaXydHPVmQuFGvDHNH35/DAFXBXMf+nY2Yvya+wuXy93FV0ulburrcpge6m4RGFz/qnXxvRWZPegX91r2b683F1rXG8Yhhb886BiB4ZWGdKt4qNdP6hDCx/1aO1X4faLRZf1h0++UtK93eXtWT+v81DZZ15tIwBaPACGh4crLCxMixcvliSVlpYqJCREU6ZMUWJiYrWPv5F/QL/8ii7rpRHmV4H/TLhDkf9d/UQGANdu0UO36j//b5dDnnt039bafOiMTuZdqrZ21ZRBuuf1L6qtW/JwH8Utr/581qv3N7x7kD7/KqfCuiNzR+qVlCy9tbHiUyO6t/TVi/fdrHYB3mrW2EPnL13WhaLLVf6Px7bnh2nA3DSVGpJfI3fl/VSsf00bqtvnra+w/l/Thuq3b2zW4of7aOzbX1ZYs/LJCGUey9U9PVupuKRULZp4au8PeXaXjtwxM1IBPp56dsVuHTx1Qe89Fq7fLtmsg6cu6KH+IZp1783mf3fbBXjryJkr591ufX6Ynl2xW4M6BuiJwe2161iu7n9ji7nfA3NGyMPVRd+eKVCwr5c5kazsNd3cyleLHrpVJ3J/0iN/3aZ3H+2vm5o20tzPvtab/9FXZwuKtOP7s4rsFlThKSBX/66+ejFKC9MOalz/tho8/+f3638nhWtgh+ZycbEpITlT/9j1g3b+/i5992OB7n9ji353R3vFD+2or0+eV4+b/NQtKUWR3YJ0tqBQ3/14UWcLirT88XC18PHUXa9t0pczhunRZdv11cl8fRR3m3l1pqyXRmjs218q81iusl4aobMFRXp02Xa99UhfpX6Vo14hTXUi9ycN6xYkbw9X7T6eZz720/hB+t8vv1fyjmOaP7qnnlt5ZeH/Rwa0Vf6lYhUUlujP4/vekEBIALRwACwqKlLjxo21cuVKxcTEmOOxsbHKzc3Vxx9/XO4xhYWFKiz8eb22/Px8hYSE1PofUEmpYc4qBQDAyoZ0aaFlE2t2alZNEQAtPAv4zJkzKikpUVCQ/VcaQUFBys7OrvAxc+fOlZ+fn3kLCQm5Ib0R/gAAuGLDgdOObqFBsmwA/DVmzJihvLw883bs2DFHtwQAQIP2zoQwR7fQINXPs0RrQUBAgFxdXZWTY3+eS05OjoKDgyt8jKenpzw9Kz+5ura891i4xv37OrVH5o7U/3z5vTq08NHADs311y+OaM7qr294D0B98Ofx/TSsa2ClS9qU2fTcULvzo6ozM7pbrf175uHqosxZd2lh2kHt+j5X2747W2Hd5sQ79cT/t0PvPzFATbzcq5ywsvX5YYr92zaNjwjV8x/urbDmpqaN1Ma/sdK//dFuUk0TLzedv/TzpQ6je7bU6j0n9Z93dlTcnR3VZeaVc85ierfSR5knzLq/xvbTpHd3SJJWPBmhsFD/ny+teG93zf70K7vn/3LGMAX7XZmtfSD7vEoNQy2aeNotgXRgzgh1mZmiR29rpxkju8r93xNw2s9YrYqusHhk7kityDiun4pKFDsw1Hz+9Bl3ytVmU/8/pinx7q46kH1eL//2FjX2cNO5giKt2ntS4/q3kSSVGob2/JCnE7k/KX75LmW9NMKcmGIYhs5dLFazxu5qN+MzxQ/tqGeGd9b4v23Tvw6e0YE5I+Tu4mL+vd3cylf7T+SrX9tmWvxwH/P1Xj2R4ePMH3RH5xZK2ZetxH/s1bd/HClJKioplaebi1l39Xnf48LbqHsrX93WIUChAd76Jue8bJI6BTXR5ZJSTfv7HoW389eS9Yd19OxFpT49WHe9tknSlQlK3p5uOn+pWP7eHvrrF0fk6eaiceFtzf1/M+dupX6Vo75tm5k9l7lUXCIXm00HT51X9KIr5xlePVHp2NmL2vtDntoFeOtA9nlNTc7U8sfD1TmoiXw83ewm+RiGoZ1Hc9UpyEe+Xu4qLTW0Zl+2Ogf5KPenYvN8zE/ib1P7Fj7y9nDVpeJSnb9UrJU7j+uxQe3l4cZxqhvFsucASlcmgfTv31+vv/66pCuTQNq0aaP4+HiHTwKpDrOA8WtUN7v21zj8x5GK/ds2fXHoTJV1mUl3ycvdtcp1DSX7D5v//vyAFq07VOnzurr8fHL42YIi9XkptVzd3Pt76KF/f/iXqejfn2//OFIuLvYnm9/56gZ9e7pAr9zfQ4n/2KtX7u+hMWEhulB4WU283O1qzxYU6d7Xv1DCXZ3VL7SZ7pi/QU8Mbq/nR3Yr91xFl0vl4eaii0WXFb3oC62aMqjCWZslpYb2HM+VzWZT75CmFb4PknQq/5Iae7rJ5xpmfv6Q+5Na+Xk5ZGmbso8dltWBo3AOoMUDYHJysmJjY/XWW2+pf//+WrBggT744ANlZWWVOzewIgRA3Eg1DWtNG7tr9r03a2pyZpV138y5Wx5uLjpzobDahajLQtjn+7P1xP9kVNrfLz/AK/u7PPjy3ebRnTIFhZfN2ZG9Qprqg98NkKdb+SVCwl7+p06fL9Tih29V/1B/7T+ZryGdW1QaHn7Zw/UsswKgYSIAWjwAStLixYvNhaB79+6tRYsWKTw8vEaPJQA2fDc1baQfcn+qtf3tmT1cjdxd1emFNdXW1mQx5n8mDFbHwCaSpPxLxeo5+/MK62bf210TfrEu3Y8XCtX3F0Hwfyb11+2dWpR7fNl6eAM7NNfyxwdU2XdWdr5aN2t8TUejatuS9Yd0+NQF/emBXuWO6gEAAZAAeF0IgA3fd69E1+i9zky6SxsOnK7yKNzVR6I2HDilCe9sr7T2l0fX7l74L319Mr/KGunK13pXr7c2M7qbxkeEVnkeTVlw/PvkgerbtlmldQDQUBAACYDXhQDYsK2dOlhdgpvo2NmLlS5IW6a6o3UVnV/2Wuo3WljBVTGuPnm+ItWtlM/5VQBQNQIgy8DAgspm4VWnS/CVr1ZD/BtXWRfg8/Mlqg69/PP1bH083dS3bTMdmDOiwq8hn76rs90+1k4drO9eia4y/EnVBzubrepLewEAYNllYGBN38y5Wy4uNsVGtNW76d9XWrd39nC7+9teGKb+L6dVWPvF9DvNn91cXa5p0gETFAAAjsARQDi1pyM7a8qdHWtU++WMYVVuH9KlhXku3B/uu6XK2l8u8RHYxEu3dwooV7f1+WHXdHF7AACcAUcA4dSeiuwkSXq9krXgrhbs56UJA0O1bMt35bY19/Yody3Jb+bcrc4z7WfjvnTfzRoX3rbC/f/PpHDl/VSsH879JN9GV/7VCfKt+utaAACcEQEQDcrs39ysyUM6aO/xPLVv4S0Xm03+Ph7y/cURPUnycHPRB7+L0INvpZtjj0SEVrl/v0bu8mtUfl8AANQnBEA4rX5XLUnyn3d2rPSKENKVZVjKBPl6Kah7zY7M9W/nr+9eiTavzAAAgBXwiQen9e6jP39lmzC8S6V1fo3c1bSxR6Xba4LwBwCwEj714BCvPtCr2ppfXhv1nwl3lKsZ0qWFtj5f9eQPAABgjwCIWtPvGq4icX+fm655/x0DfbTtqrA3qGOA3pkQxixcAACuEQEQtWbhQ7fWuNZms+kf/2/gNT9HoK+XvnslWt+9Eq3/fSycBY8BAPgVCICoNc29a3Ye3sAOzSVJfdpUfsRwG1/rAgBwwxAAUWtq+lXs8scHmD8P6xpYYU0g6+sBAHDDEADhUH8e36/c2DsTwhzQCQAA1kEARK0I/vcRuy+mD72mx7m42NT3qskjE28L1dBKjgoCAIDawULQqBVPDG4vSWrdrPE1P/bvkwfqg+3H5NvITSNuaVnbrQEAgF8gAKJWTLwttEZ1T97RocLxB8NCarEbAABQFb4CRq2o6XIs06Iqv6IHAACoGwRA1LqFY3tXOP6fd3aUiwvr9gEA4GgEQNS6+3rfpACf8msCxt/ZyQHdAACAXyIA4rqFhZZf0HnDc+VnA3u48ecGAIAz4BMZ1+0/BrQtN+bj6aYZd3c17//hNzfXZUsAAKAKzALGdYvuUfHSLb+7o4OeGNxeP+T+9KuWhwEAADcGRwBx3dxcK/8zstlshD8AAJwMARAAAMBiCIAAAAAWQwBEpTY9N1Qzo7s5ug0AAFDLCICo0ISBoWrTvLEeu719lXWfxN9WRx0BAIDaQgBEhWbXcNmWts29b3AnAACgthEAAQAALIYAiHKei+pid/+ZuzpXWtvYw/VGtwMAAGoZARB2ZkZ3U9zQjnZjk25vV2Hta2N6yb2KNQABAIBz4tMbdiYMDC031tjDTbuThpcb7xLkWwcdAQCA2kYAhJ3Krurh19i93FinIJ8b3Q4AALgBCIAwvTMxrMrtfdo0tbvP178AANRPfILDNLRLYJXbP/hdRB11AgAAbiQCIGrMzdVF658dIknq17aZY5sBAAC/mpujG4BzaBdQswWd2wV4a3fScPl48acDAEB9xac4dHunAL07sX+N6yuaEAIAAOoPAiD0P5PCHd0CAACoQ3V6DuDLL7+sgQMHqnHjxmratGmFNUePHlV0dLQaN26swMBAPffcc7p8+bJdzYYNG9SnTx95enqqY8eOWrZsWbn9LFmyRKGhofLy8lJ4eLi2bdtmt/3SpUuKi4tT8+bN5ePjo1GjRiknJ6e2XioAAIDTqtMAWFRUpAceeECTJ0+ucHtJSYmio6NVVFSkLVu26N1339WyZcuUlJRk1hw5ckTR0dEaOnSoMjMzNXXqVD322GNau3atWZOcnKyEhATNmjVLO3fuVK9evRQVFaVTp06ZNU8//bQ+/fRTrVixQhs3btSJEyd0//3337gXDwAA4CRshmEYdf2ky5Yt09SpU5Wbm2s3vmbNGt1zzz06ceKEgoKCJElLly7V9OnTdfr0aXl4eGj69OlavXq19u3bZz5u7Nixys3NVUpKiiQpPDxcYWFhWrx4sSSptLRUISEhmjJlihITE5WXl6cWLVpo+fLlGj16tCQpKytL3bp1U3p6ugYMGFCj15Gfny8/Pz/l5eXJ17dur4oRmri6Vvbz+O3t9EJ091rZFwAA9YEjP7+dhVMtA5Oenq4ePXqY4U+SoqKilJ+fr/3795s1kZGRdo+LiopSenq6pCtHGTMyMuxqXFxcFBkZadZkZGSouLjYrqZr165q06aNWWMVwX6NHN0CAACoY041CSQ7O9su/Eky72dnZ1dZk5+fr59++knnzp1TSUlJhTVZWVnmPjw8PMqdhxgUFGQ+T0UKCwtVWFho3s/Pz7+2F+iEerb2c3QLAACgjl33EcDExETZbLYqb2XBq76bO3eu/Pz8zFtISIijW7puYaH+jm4BAADUses+AvjMM89owoQJVda0b9++RvsKDg4uN1u3bGZucHCw+c9fztbNycmRr6+vGjVqJFdXV7m6ulZYc/U+ioqKlJuba3cU8OqaisyYMUMJCQnm/fz8/AYRAgEAgLVcdwBs0aKFWrRoURu9KCIiQi+//LJOnTqlwMAr16VNTU2Vr6+vunfvbtZ89tlndo9LTU1VRMSV69R6eHiob9++SktLU0xMjKQrk0DS0tIUHx8vSerbt6/c3d2VlpamUaNGSZIOHDigo0ePmvupiKenpzw9PWvltQIAADhKnZ4DePToUZ09e1ZHjx5VSUmJMjMzJUkdO3aUj4+Phg8fru7du+uRRx7RvHnzlJ2drZkzZyouLs4MXk8++aQWL16sadOm6dFHH9W6dev0wQcfaPXqn2fFJiQkKDY2Vv369VP//v21YMECFRQUaOLEiZIkPz8/TZo0SQkJCfL395evr6+mTJmiiIiIGs8ABgAAqK/qNAAmJSXp3XffNe/feuutkqT169dryJAhcnV11apVqzR58mRFRETI29tbsbGxevHFF83HtGvXTqtXr9bTTz+thQsXqnXr1vrLX/6iqKgos2bMmDE6ffq0kpKSlJ2drd69eyslJcVuYshrr70mFxcXjRo1SoWFhYqKitIbb7xRB+9C3bivdyt9nHmiyprbOwXUUTcAAMCZOGQdwIbCmdcBfLBfa32w43iVNYl3d9WTd3SozbYAAHB6rAPoZOsAovZ4urlWW/Pobe3qoBMAAOBsCIAN1KODqg93Hm78+gEAsCISQAPVLsDb0S0AAAAnRQAEAACwGAIgAACAxRAAG7AJA0Md3QIAAHBCBMAGLOme7o5uAQAAOCECYAPm4mLTyB4VX9v4L+P71XE3AADAWRAAGzibzVbheGT3oArHAQBAw0cABAAAsBgCYAPk5vLzUb+Kj/8BAAArIwA2QNE9W5o/B/h4OrATAADgjAiADdyoPq0d3QIAAHAyBMAGrmlj93JjAzs0d0AnAADAWRAAG7gQ/8blxkb2aFlBJQAAsAoCoAVVsjIMAACwCAJgA2QY9vf9vT0c0wgAAHBKBMAGyLeRm939ToE+dvfbNfeuy3YAAICTIQA2QNE9Wtndd3Wx/853YMeAumwHAAA4GQJgA+Tmah/4XrzvFgd1AgAAnBEB0AI6/uIrYAAAYG0EwAbIhVm+AACgCgTABujWkGaObgEAADgxAmAD5FLFIcAAH5aEAQDA6giAAAAAFkMABAAAsBgCIAAAgMUQAC3iv0b1UGMPVy15uI+jWwEAAA7mVn0JGoIxYW30QN+QKieIAAAAa+AIoIUQ/gAAgEQABAAAsBwCYAPTyN3V0S0AAAAnRwBsYBp5EAABAEDVCIAAAAAWQwAEAACwGAIgAACAxRAAGxjDMBzdAgAAcHIEwAaG+AcAAKpDAAQAALAYAiAAAIDF1FkA/O677zRp0iS1a9dOjRo1UocOHTRr1iwVFRXZ1e3Zs0e33367vLy8FBISonnz5pXb14oVK9S1a1d5eXmpR48e+uyzz+y2G4ahpKQktWzZUo0aNVJkZKQOHjxoV3P27FmNGzdOvr6+atq0qSZNmqQLFy7U/gsHAABwMnUWALOyslRaWqq33npL+/fv12uvvaalS5fq+eefN2vy8/M1fPhwtW3bVhkZGZo/f75mz56tt99+26zZsmWLHnroIU2aNEm7du1STEyMYmJitG/fPrNm3rx5WrRokZYuXaqtW7fK29tbUVFRunTpklkzbtw47d+/X6mpqVq1apU2bdqkJ554om7eDAAAAAeyGQ6cNjp//ny9+eab+vbbbyVJb775pl544QVlZ2fLw8NDkpSYmKiPPvpIWVlZkqQxY8aooKBAq1atMvczYMAA9e7dW0uXLpVhGGrVqpWeeeYZPfvss5KkvLw8BQUFadmyZRo7dqy+/vprde/eXdu3b1e/fv0kSSkpKRo5cqSOHz+uVq1a1aj//Px8+fn5KS8vT76+vrX2vtREaOLqCsebNnZXZtLwOu0FAID6xJGf387CoecA5uXlyd/f37yfnp6uwYMHm+FPkqKionTgwAGdO3fOrImMjLTbT1RUlNLT0yVJR44cUXZ2tl2Nn5+fwsPDzZr09HQ1bdrUDH+SFBkZKRcXF23durX2XygAAIATcVgAPHTokF5//XX97ne/M8eys7MVFBRkV1d2Pzs7u8qaq7df/bjKagIDA+22u7m5yd/f36ypSGFhofLz8+1uzubBfiGObgEAADi56w6AiYmJstlsVd7Kvr4t88MPP2jEiBF64IEH9Pjjj19vC3Vm7ty58vPzM28hIc4Xtu7sGlh9EQAAsDS3693BM888owkTJlRZ0759e/PnEydOaOjQoRo4cKDd5A5JCg4OVk5Ojt1Y2f3g4OAqa67eXjbWsmVLu5revXubNadOnbLbx+XLl3X27Fnz8RWZMWOGEhISzPv5+flOGQIBAACqct0BsEWLFmrRokWNan/44QcNHTpUffv21TvvvCMXF/sDkBEREXrhhRdUXFwsd3d3SVJqaqq6dOmiZs2amTVpaWmaOnWq+bjU1FRFRERIktq1a6fg4GClpaWZgS8/P19bt27V5MmTzX3k5uYqIyNDffv2lSStW7dOpaWlCg8Pr7R/T09PeXp61ui1AgAAOKs6Owfwhx9+0JAhQ9SmTRv96U9/0unTp5WdnW13zt3DDz8sDw8PTZo0Sfv371dycrIWLlxod9TtqaeeUkpKil599VVlZWVp9uzZ2rFjh+Lj4yVJNptNU6dO1Zw5c/TJJ59o7969Gj9+vFq1aqWYmBhJUrdu3TRixAg9/vjj2rZtmzZv3qz4+HiNHTu2xjOAnVUrv0aObgEAADi56z4CWFOpqak6dOiQDh06pNatW9ttK1uJxs/PT59//rni4uLUt29fBQQEKCkpyW59voEDB2r58uWaOXOmnn/+eXXq1EkfffSRbrnlFrNm2rRpKigo0BNPPKHc3FwNGjRIKSkp8vLyMmvee+89xcfHa9iwYXJxcdGoUaO0aNGiG/wu3Hhtmjd2dAsAAMDJOXQdwPrOGdcB/O6V6DrtAwCA+oZ1ALkWMAAAgOUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiADUh0z5aObgEAANQDBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMAbEgMRzcAAADqAwJgAzKsW6CjWwAAAPUAAbABuat7kKNbAAAA9QABsAFp4uXu6BYAAEA9QAAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxdRpAPzNb36jNm3ayMvLSy1bttQjjzyiEydO2NXs2bNHt99+u7y8vBQSEqJ58+aV28+KFSvUtWtXeXl5qUePHvrss8/sthuGoaSkJLVs2VKNGjVSZGSkDh48aFdz9uxZjRs3Tr6+vmratKkmTZqkCxcu1P6LBgAAcDJ1GgCHDh2qDz74QAcOHNDf//53HT58WKNHjza35+fna/jw4Wrbtq0yMjI0f/58zZ49W2+//bZZs2XLFj300EOaNGmSdu3apZiYGMXExGjfvn1mzbx587Ro0SItXbpUW7dulbe3t6KionTp0iWzZty4cdq/f79SU1O1atUqbdq0SU888UTdvBEAAAAOZDMMw3DUk3/yySeKiYlRYWGh3N3d9eabb+qFF15Qdna2PDw8JEmJiYn66KOPlJWVJUkaM2aMCgoKtGrVKnM/AwYMUO/evbV06VIZhqFWrVrpmWee0bPPPitJysvLU1BQkJYtW6axY8fq66+/Vvfu3bV9+3b169dPkpSSkqKRI0fq+PHjatWqVY36z8/Pl5+fn/Ly8uTr61ubb021QhNXlxv77pXoOu0BAID6yJGf387CYecAnj17Vu+9954GDhwod3d3SVJ6eroGDx5shj9JioqK0oEDB3Tu3DmzJjIy0m5fUVFRSk9PlyQdOXJE2dnZdjV+fn4KDw83a9LT09W0aVMz/ElSZGSkXFxctHXr1kp7LiwsVH5+vt0NAACgvqnzADh9+nR5e3urefPmOnr0qD7++GNzW3Z2toKCguzqy+5nZ2dXWXP19qsfV1lNYGCg3XY3Nzf5+/ubNRWZO3eu/Pz8zFtISEiNXzcAAICzuO4AmJiYKJvNVuWt7OtbSXruuee0a9cuff7553J1ddX48ePlwG+hr8mMGTOUl5dn3o4dO+bolgAAAK6Z2/Xu4JlnntGECROqrGnfvr35c0BAgAICAtS5c2d169ZNISEh+vLLLxUREaHg4GDl5OTYPbbsfnBwsPnPimqu3l421rJlS7ua3r17mzWnTp2y28fly5d19uxZ8/EV8fT0lKenZ5WvFQAAwNld9xHAFi1aqGvXrlXerj6n72qlpaWSrpxbJ0kRERHatGmTiouLzZrU1FR16dJFzZo1M2vS0tLs9pOamqqIiAhJUrt27RQcHGxXk5+fr61bt5o1ERERys3NVUZGhlmzbt06lZaWKjw8/HrfEgAAAKdWZ+cAbt26VYsXL1ZmZqa+//57rVu3Tg899JA6dOhgBrOHH35YHh4emjRpkvbv36/k5GQtXLhQCQkJ5n6eeuoppaSk6NVXX1VWVpZmz56tHTt2KD4+XpJks9k0depUzZkzR5988on27t2r8ePHq1WrVoqJiZEkdevWTSNGjNDjjz+ubdu2afPmzYqPj9fYsWNrPAMYAACgvqqzANi4cWP94x//0LBhw9SlSxdNmjRJPXv21MaNG82vVf38/PT555/ryJEj6tu3r5555hklJSXZrc83cOBALV++XG+//bZ69eqllStX6qOPPtItt9xi1kybNk1TpkzRE088obCwMF24cEEpKSny8vIya9577z117dpVw4YN08iRIzVo0CC79QYBAAAaKoeuA1jfsQ4gAAD1D+sAci1gAAAAyyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAmAD8VD/No5uAQAA1BMEwAbCy51fJQAAqBlSQwMR3s7f0S0AAIB6ggBYT2XMjDR/Dm/nr6ibgx3YDQAAqE/cHN0Afp3mPp5c+QMAAPwqHAEEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAItxc3QD9ZlhGJKk/Px8B3cCAABqquxzu+xz3IoIgNfh/PnzkqSQkBAHdwIAAK7V+fPn5efn5+g2HMJmWDn+XqfS0lKdOHFCTZo0kc1mq9V95+fnKyQkRMeOHZOvr2+t7hs3Br+z+onfW/3E761+cpbfm2EYOn/+vFq1aiUXF2ueDccRwOvg4uKi1q1b39Dn8PX15T9u9Qy/s/qJ31v9xO+tfnKG35tVj/yVsWbsBQAAsDACIAAAgMUQAJ2Up6enZs2aJU9PT0e3ghrid1Y/8Xurn/i91U/83pwHk0AAAAAshiOAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAOiElixZotDQUHl5eSk8PFzbtm1zdEuoxqZNm3TvvfeqVatWstls+uijjxzdEqoxd+5chYWFqUmTJgoMDFRMTIwOHDjg6LZQjTfffFM9e/Y0FxKOiIjQmjVrHN0WrsErr7wim82mqVOnOroVSyMAOpnk5GQlJCRo1qxZ2rlzp3r16qWoqCidOnXK0a2hCgUFBerVq5eWLFni6FZQQxs3blRcXJy+/PJLpaamqri4WMOHD1dBQYGjW0MVWrdurVdeeUUZGRnasWOH7rzzTt13333av3+/o1tDDWzfvl1vvfWWevbs6ehWLI9lYJxMeHi4wsLCtHjxYklXrjccEhKiKVOmKDEx0cHdoSZsNps+/PBDxcTEOLoVXIPTp08rMDBQGzdu1ODBgx3dDq6Bv7+/5s+fr0mTJjm6FVThwoUL6tOnj9544w3NmTNHvXv31oIFCxzdlmVxBNCJFBUVKSMjQ5GRkeaYi4uLIiMjlZ6e7sDOgIYvLy9P0pUwgfqhpKRE77//vgoKChQREeHodlCNuLg4RUdH233GwXHcHN0AfnbmzBmVlJQoKCjIbjwoKEhZWVkO6gpo+EpLSzV16lTddtttuuWWWxzdDqqxd+9eRURE6NKlS/Lx8dGHH36o7t27O7otVOH999/Xzp07tX37dke3gn8jAAKwvLi4OO3bt09ffPGFo1tBDXTp0kWZmZnKy8vTypUrFRsbq40bNxICndSxY8f01FNPKTU1VV5eXo5uB/9GAHQiAQEBcnV1VU5Ojt14Tk6OgoODHdQV0LDFx8dr1apV2rRpk1q3bu3odlADHh4e6tixoySpb9++2r59uxYuXKi33nrLwZ2hIhkZGTp16pT69OljjpWUlGjTpk1avHixCgsL5erq6sAOrYlzAJ2Ih4eH+vbtq7S0NHOstLRUaWlpnN8C1DLDMBQfH68PP/xQ69atU7t27RzdEn6l0tJSFRYWOroNVGLYsGHau3evMjMzzVu/fv00btw4ZWZmEv4chCOATiYhIUGxsbHq16+f+vfvrwULFqigoEATJ050dGuowoULF3To0CHz/pEjR5SZmSl/f3+1adPGgZ2hMnFxcVq+fLk+/vhjNWnSRNnZ2ZIkPz8/NWrUyMHdoTIzZszQ3XffrTZt2uj8+fNavny5NmzYoLVr1zq6NVSiSZMm5c6t9fb2VvPmzTnn1oEIgE5mzJgxOn36tJKSkpSdna3evXsrJSWl3MQQOJcdO3Zo6NCh5v2EhARJUmxsrJYtW+agrlCVN998U5I0ZMgQu/F33nlHEyZMqPuGUCOnTp3S+PHjdfLkSfn5+alnz55au3at7rrrLke3BtQrrAMIAABgMZwDCAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAVjWhAkTFBMT4+g2AKDOcSUQAA2SzWarcvusWbO0cOFCsRY+ACsiAAJokE6ePGn+nJycrKSkJB04cMAc8/HxkY+PjyNaAwCH4ytgAA1ScHCwefPz85PNZrMb8/HxKfcV8JAhQzRlyhRNnTpVzZo1U1BQkP785z+roKBAEydOVJMmTdSxY0etWbPG7rn27dunu+++Wz4+PgoKCtIjjzyiM2fO1PErBoCaIwACwFXeffddBQQEaNu2bZoyZYomT56sBx54QAMHDtTOnTs1fPhwPfLII7p48aIkKTc3V3feeaduvfVW7dixQykpKcrJydGDDz7o4FcCAJUjAALAVXr16qWZM2eqU6dOmjFjhry8vBQQEKDHH39cnTp1UlJSkn788Uft2bNHkrR48WLdeuut+uMf/6iuXbvq1ltv1d/+9jetX79e33zzjYNfDQBUjHMAAeAqPXv2NH92dXVV8+bN1aNHD3MsKChIknTq1ClJ0u7du7V+/foKzyc8fPiwOnfufIM7BoBrRwAEgKu4u7vb3bfZbHZjZbOLS0tLJUkXLlzQvffeq//6r/8qt6+WLVvewE4B4NcjAALAdejTp4/+/ve/KzQ0VG5u/CcVQP3AOYAAcB3i4uJ09uxZPfTQQ9q+fbsOHz6stWvXauLEiSopKXF0ewBQIQIgAFyHVq1aafPmzSopKdHw4cPVo0cPTZ06VU2bNpWLC/+JBeCcbAbL4AMAAFgK/3sKAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGL+fwZ/Q6mOUdutAAAAAElFTkSuQmCC \ No newline at end of file diff --git a/vicks/input.png b/vicks/input.png new file mode 100644 index 0000000..7112024 Binary files /dev/null and b/vicks/input.png differ diff --git a/vicks/insta login.py b/vicks/insta login.py new file mode 100644 index 0000000..0f1f86c --- /dev/null +++ b/vicks/insta login.py @@ -0,0 +1,44 @@ + +import time +from selenium import webdriver +from selenium.webdriver.common.by import By + +web = webdriver.Chrome() +Email = "*********" +passw = "********" + +web.get('https://www.instagram.com/') +time.sleep(2) + +def fun_login(passw): + try: + first = web.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[1]/div/label/input') + first.send_keys(Email) + + last = web.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[2]/div/label/input') + last.send_keys(passw) + + Submit = web.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[3]') + Submit.click() + + time.sleep(2) + save = web.find_element(By.XPATH, '//*[@id="react-root"]/section/main/div/div/div/div/button') + save.click() + + print(passw) + except: + web.refresh() + +# while 1: +time.sleep(2) +fun_login(passw) + +# --------------------------------- + +# from itertools import permutations +# stri = "!#$%&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz|~" + +# lst = list(stri) +# # for i in range(6, len(lst)): +# comb = permutations(lst, 6) +# print(list(comb)) diff --git a/vicks/output.jpeg b/vicks/output.jpeg new file mode 100644 index 0000000..7112024 Binary files /dev/null and b/vicks/output.jpeg differ diff --git a/vicks/vicky.jpeg b/vicks/vicky.jpeg new file mode 100644 index 0000000..03f9f2c Binary files /dev/null and b/vicks/vicky.jpeg differ diff --git a/vicks/vicky.jpg b/vicks/vicky.jpg new file mode 100644 index 0000000..03f9f2c Binary files /dev/null and b/vicks/vicky.jpg differ diff --git a/vicks/w3s login.py b/vicks/w3s login.py new file mode 100644 index 0000000..a7f3f9a --- /dev/null +++ b/vicks/w3s login.py @@ -0,0 +1,76 @@ + +import time +from selenium import webdriver +from selenium.webdriver.common.by import By + +web = webdriver.Chrome() + +Email = "sagar.sws2000@gmail.com" +# Email = "18erecs080.vicky@rietjaipur.ac.in" +passw = "*********" + +def fun_signup(): + web.get('https://www.w3schools.com/') + time.sleep(4) + + login = web.find_element(By.XPATH, '//*[@id="w3loginbtn"]') + login.click() + + signup = web.find_element(By.XPATH, '//*[@id="root"]/div/div/div[4]/div[1]/div/div[2]/form/div[1]/div[1]/span/span') + signup.click() + + first = web.find_element(By.XPATH, '//*[@id="modalusername"]') + first.send_keys(Email) + + last = web.find_element(By.XPATH, '//*[@id="new-password"]') + last.send_keys(passw) + + Submit = web.find_element(By.XPATH, '//*[@id="root"]/div/div/div[4]/div[1]/div/div[4]/div[1]/button') + Submit.click() + + fname = "Vicky" + first = web.find_element(By.XPATH, '//*[@id="modal_first_name"]') + first.send_keys(fname) + + lname = "Kumar" + last = web.find_element(By.XPATH, '//*[@id="modal_last_name"]') + last.send_keys(lname) + + Submit = web.find_element(By.XPATH, '//*[@id="root"]/div/div/div[4]/div[1]/div/div[3]/div/button') + Submit.click() + +# fun_signup() + + + +def fun_login(passw): + web.get('https://my-learning.w3schools.com/') + + first = web.find_element(By.XPATH, '//*[@id="modalusername"]') + first.send_keys(Email) + + last = web.find_element(By.XPATH, '//*[@id="current-password"]') + last.send_keys(passw) + + Submit = web.find_element(By.XPATH, '//*[@id="root"]/div/div/div[4]/div[1]/div/div[4]/div[1]/button') + Submit.click() + + # try: + # input(''' + # >>> Press Enter to Logout... + # ''') + + # logout = web.find_element(By.XPATH, '//*[@id="navigation"]/div/button') + # logout.click() + # except: + # pass + + +# to automate login +lst_passw = [str(i) for i in range(5)] +lst_passw.append(passw) +# print(lst_passw) + +for i in lst_passw: + time.sleep(2) + fun_login(i)