From d17b528bafc54b53823a9455596e0a1a4d95422b Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Fri, 19 Apr 2024 11:28:07 +1000 Subject: [PATCH] feat: Add more coins --- .well-known/wallets/.coins | 5 +- .well-known/wallets/.tokens | 4 +- .well-known/wallets/EOS | 1 + .well-known/wallets/OP | 1 + .well-known/wallets/TON | 1 + data/ascii.txt | 50 ++++++++++ data/sites.json | 50 ++++++++++ requirements.txt | 4 +- server.py | 63 ++++++++++-- templates/404.html | 61 ++++++++---- templates/ascii.html | 26 +++-- templates/assets/css/404.min.css | 1 + templates/assets/img/profile2-fg.webp | Bin 0 -> 16378 bytes templates/assets/img/profile2.webp | Bin 0 -> 15990 bytes templates/assets/js/404.min.js | 1 + templates/assets/js/pfp.min.js | 1 + templates/index.html | 83 ++++------------ templates/now/24_02_18.html | 6 +- templates/now/24_02_25.html | 6 +- templates/now/24_04_14.html | 136 ++++++++++++++++++++++++++ templates/now/old.html | 6 +- templates/now/template.html | 6 +- templates/resume.html | 2 +- templates/sitemap.xml | 4 +- 24 files changed, 401 insertions(+), 117 deletions(-) create mode 100644 .well-known/wallets/EOS create mode 100644 .well-known/wallets/OP create mode 100644 .well-known/wallets/TON create mode 100644 data/ascii.txt create mode 100644 data/sites.json create mode 100644 templates/assets/css/404.min.css create mode 100644 templates/assets/img/profile2-fg.webp create mode 100644 templates/assets/img/profile2.webp create mode 100644 templates/assets/js/404.min.js create mode 100644 templates/assets/js/pfp.min.js create mode 100644 templates/now/24_04_14.html diff --git a/.well-known/wallets/.coins b/.well-known/wallets/.coins index 4b408ef..0480c7b 100644 --- a/.well-known/wallets/.coins +++ b/.well-known/wallets/.coins @@ -19,5 +19,8 @@ "SCRT": "Secret Network (SCRT)", "LTC": "Litecoin (LTC)", "DOGE": "Dogecoin (DOGE)", - "ALGO": "Algorand (ALGO)" + "ALGO": "Algorand (ALGO)", + "TON": "Toncoin (TON)", + "OP": "Optimism (OP)", + "IAA": "IRIS (IAA)" } \ No newline at end of file diff --git a/.well-known/wallets/.tokens b/.well-known/wallets/.tokens index 6bc4da5..c1c92e5 100644 --- a/.well-known/wallets/.tokens +++ b/.well-known/wallets/.tokens @@ -1,12 +1,12 @@ [ { "symbol": "USDT", - "name": "USDT", + "name": "Tether", "chain": "ETH" }, { "symbol": "USDT", - "name": "USDT", + "name": "Tether", "chain": "SOL" }, { diff --git a/.well-known/wallets/EOS b/.well-known/wallets/EOS new file mode 100644 index 0000000..c88b327 --- /dev/null +++ b/.well-known/wallets/EOS @@ -0,0 +1 @@ +nwoodburn111 \ No newline at end of file diff --git a/.well-known/wallets/OP b/.well-known/wallets/OP new file mode 100644 index 0000000..3c1a338 --- /dev/null +++ b/.well-known/wallets/OP @@ -0,0 +1 @@ +0x6cB4B39bEc23a921C9a20D061Bf17d4640B0d39e \ No newline at end of file diff --git a/.well-known/wallets/TON b/.well-known/wallets/TON new file mode 100644 index 0000000..9830d85 --- /dev/null +++ b/.well-known/wallets/TON @@ -0,0 +1 @@ +UQAtpYb-yOaTSA40mJRvUxKv1WVeIPi-g_4Jqn0oWYypsQIf \ No newline at end of file diff --git a/data/ascii.txt b/data/ascii.txt new file mode 100644 index 0000000..a2de097 --- /dev/null +++ b/data/ascii.txt @@ -0,0 +1,50 @@ +KK00000OOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOO00000KXKKK000K0K000KKK0000OkkxxxxdddddddxxxxkOOOO +KKKKK00OkkkkkkkkkkkkkkkkkkkkkOOOOkkkkkkkkkkOOkkkkkOOO0000OOO0OOOOOkkkkOOkkkkxddddddooooooooddddddxxk +XKKKK0OOkkkxxxxxxxxxxkkkkkkkkO0OOkkkxxxxxxxxxxxxxxxxxkkkxxxxxxxxxxxxddddddoooooolllllllloooooooooooo +KK00OOOkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddookxooooooodddddddoooooodooooollllllllllllllllllllllllllll +KK000OOOOkkkkkkkkkkkkxkxxxxxxxxxxddddooooooooooooooooooooooooolloooollllllllllllllllllllllllllllllll +XKKKKK000OOOOOOOOkkkkkkkxxxxddddddddoooooooooooooooooooooooooolloollllllllllllllllllllllllllllllllll +NXXXKKKK00000KKKKK00KKK0Okkkkxxxxxdddddddddddddddoooooooooooooooooooooooooooollllllloooooooooooooooo +XXXXXXXXXXXXXXXXXKK00OOddkOK000OOOkkxxxxxxxxxxxxxxxxxxdddddddddddxxxxxxxxxxxxdxxxxxxxkkkkkkkkkOOOkkk +XXXXXXXXXXXXK0kxdlcll::codxk00kOOOOOkkkkkkkkkkkkxxkkkkkkkkkOOOO00KKKKKXXXXXXXKXXKKKKKXKKK0000OOkkkkk +NNNNNNNNXK0Oxdo:;::;,''';oO:;dOx0KKKKKKKK000NK0000000KKKKKKKKXXXXXXXXXXXXXXXXXXNXKKKKK00OOOOOOOOOO00 +d0XXNNNKOkoc,,;::;'..';:,l;.',::d0KKKKKKKKKKXKKXXXXXXKKKKKK0000000OOOO000O0000K0000KKKK000000000KKKX +;lk0k0XKdc:,,,..........,.....'::o0O0KKKKKKKXXXXXXKKXXKKKK000OOOOOOOOOOOOOOOOOO000000000OOOOOOOOOOOO +',;;;ckx;'.,,..'.....  ........'cldOOKXXXXXXXXXKKKKKKKKKKXK0000000000000000KKKKKKKKKK00000000OOOOOOO +.''',cx:','........   .....,'...,:coox0000000000000000000KK0OOOOOOOOOOOOOOO000000000OOOO0OOOOOOOOOOO +....';,.......... .   ..'.'cll....':odO00000KKKKKKKKKKKKKKKKKKKKKKK000K0000000000000000000000000X0Ok +',,;,'.........' .:. ':';.llodd....''lkKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKXXXXXXXXK0Okxddood +'';cc:'...x;c;;:,::'.::;;':cldxl....;x0000000000KKKKKKKKKKKKKKXXXKKKKKKKKKKK0Okkxxxxxxxxxdoooooooooo +.'';,,;..,0o;;,'..,:;:,''.',;:od,..,o00000000KKKKKKKKKKKKK0OOkkxdddxxxkkOkxdddddddddoooooooooooooooo +....''':';Kd:;'',;;;::::,;'..;od:.ldOKKKKK000OOkkkkkkkkxxddddddddddddddddddddddooooooooooooooooollll +.......lx:X0kxxddool:cccccccllooc;lkOkxxxxddddddxdddddddddddddddddddddddddoooooooooooooooooooollllll +......'lxoK0kkkkxxOoccccclllllool;lxxddddccloodkO0000OOkdoodddxddodooodddooooooooooddddooooollllllll +....';:::okKOkkkkxocc:llllllllolodddddc,,cl,ccc:;,;:cllclooolc;:ccodxxdoooooooooddddooolllllllllllll +...'''',,';O0OOOkkxoccccllllool'l,oddc.;,'  ';:cloooddooooddddxxxdlc:::cooloddddddoolllllllllllllllc +.....''....,00Oklcoddol:,coool;lOcoo: .     ....',::'......'',;:loooooo,'c.looooooloolllllllclllcccc +.........''',x0OOkxolclllool:,ckOoc,           ......:dxo;,,'....';;;,,;....oolllllllllllllccccccccc +.',.. .,;:ll:;coOkkxdooolc;',;lkOxc..            ...c0xo'.......',,,,,'''....kollllllllllllccccccccc +.. .  ..,,,,::lc:cloolc;'.,::;okkkcc'.         ...'oKx;..''.'... ...........':kolllllllccccccocccc:: +...',,,,,c;.',,:ko:.....,:ccc:odkOkxl,.         .'xOc'........'..  .        ..;xllllccccccccccccc::: +:;c;;,,,',:cccccoxdl,.';:cccccolokOk0XXxOlc''. ..co:.         ....;.          ..ccccccccccc:ccc::::: +,,,,,,';,;;;;;;::dxdo;,:cccccllccdkkOOdlx:c:oddlcll..          ...:...  ........:llllllcccccc::::::c +','''''',..'..,oxlodolc:::cccllllloxdl::;...;;:cc::,            ..;..'...... ..'clllccccccccc:c::::: +..'........,lddckx;llcc::::clcooolcccllc;....',,,'cOOxl;.        .,.',',,'.. ..cllllcccc::cc:o:::::: +..'.....'okxl:;dNoolcc::::cllllllc::c::;,......'..lkKNNNNkc.      ....,,;:;;,':clccccccc::c::::::::: +'''...'ldl:,..cNOxkxoll::coloxkOOd:::cc,'....'''..:clokO0OK0l         ..'.';;c:ccccccc:::l:::::::::: +.''.:kx:;'.. .Xk;:xKKkddoddkOOOxl:::cll,'.. ......,:cccloxxkKk          ....''::ccc::::::::::::::::: +..,k0l'..... 'xo;,;okkxxxkOOkdlccc:::cl,'.   ..   .::::cclooxNd    . ..........,:ccccclccclllloooodd +.;0kl......  'dl;;;::ldkkxdl::cccc:::cl;,.   .... .,;,:::ccloONl   '......,;,,..lloodddddodooooooddx +.kxo, .....  'oc;;;:::::,,,,;ccccc::::cc,.   ...   '',;;;::cld0N.  ,.......,,c:,ddddddoooooooooooddd +'kl:' .....  ,l:;;;:::c:,,,;cccccc::::;:;.    ..   ..,;,;;::clx0x .''.......,;:ddddooodddddooooooodd +,o:;'    .  .;c::;;;c:::;,,;cccc:c:clc:l;'   .....  .,,,,;;::cxx0  ';'.......,;coooddxxxdddodddddxxx +l::;' ...   .;::::;;::::;,,:ccc::c:colol:;          .',',,;;;:oxd; .;''.......;..;oxxxxxxxdxxxdooool +l:;,, ..    .,;;:::;::;:,,;:ccc;:::;;:;;lc.          .''',,;;:lxod  ,.''......,o;..coddddddddollcccc +;c','.      .',;;:::::;;,,,:cc;;:::;:c,;:c'.         ...',,;,;:ooo; '..''......ddo:.ddolllcccccccccc +:l,.'.      '',;;;::::;,,,,;::,;;,,':;',;l,          ....,,,,,;:dld '..''....'.:xdd.dxdddddooollllcl +cc:...      .'',;;;:::;,,,,;:;,,,:;;;,;;;:'..         ...,,,,,,;olo,'....'....''xc.:dddolooodoooodoo +l:l,......  .''';;,;;:;,''',;''';;;,;',','.      ..   ..,,,',,,;lolc. ........''..;llcllcllodddddood +;co:'.       ...',,,,;;;''',,'....,,,,'.,;... ..       .,,''',,;:dld.    ...  ..'occcllclllooddddddd +..:;;....     ...'''',;;,''''....',...''.,.....        .,'''',;;;olx      ..   . :c,';::clooooooddoo +,;;c,,...      '..'''',cl'.''....;..',..';.. ...       .''''',;;;olo,. ..'......'':,;,',,;:::ccllloo +.',o,;....      ..'''.',''..'....';,'. . ..  ...       .'''',;;;;llcl......''.....,.,,,;;,,',;clllod diff --git a/data/sites.json b/data/sites.json new file mode 100644 index 0000000..ba9441d --- /dev/null +++ b/data/sites.json @@ -0,0 +1,50 @@ +[ + { + "url": "https://nathan3dprinting.au", + "img": "/assets/img/favicon_trans.webp", + "name": "Nathan 3D Printing", + "description": "Offering 3D Printing and CAD modelling services to the Canberra region" + }, + { + "url": "https://domains.hns.au", + "img": "/assets/img/HNSAU.webp", + "name": "HNSAU Registry", + "description": "An easy to use DNS provider and domain reselling platform" + }, + { + "url": "https://hns.au", + "img": "/assets/img/HNSAU.webp", + "name": "HNSAU", + "description": "The group for Handshake enthusiasts in Australia" + }, + { + "url": "https://hnshosting.au", + "img": "/assets/img/logo.png", + "name": "HNS Hosting", + "description": "Simple Wordpress hosting for Handshake domains with builtin SSL using DANE" + }, + { + "url": "https://firewallet.au", + "img": "/assets/img/firewallet.png", + "name": "FireWallet", + "description": "An opensource Handshake wallet that is Fire!" + }, + { + "url": "https://shakecities.com", + "img": "/assets/img/HNSW.png", + "name": "ShakeCities", + "description": "A single page website creator where each user's page on their free HNS domain" + }, + { + "url": "https://git.woodburn.au", + "img": "/assets/img/logo.png", + "name": "Git Server", + "description": "Selfhosted Git server to host my repos with custom hosted CI/CD" + }, + { + "url": "https://linkr", + "img": "/assets/img/logo.png", + "name": "LINKR/", + "description": "A free link shortener with a Handshake TLD and using DNS for authentication" + } +] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 3ee6f81..ae5530b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,6 @@ Flask-Cors python-dotenv gunicorn requests -cloudflare \ No newline at end of file +cloudflare +qrcode +ansi2html \ No newline at end of file diff --git a/server.py b/server.py index 2b025e6..425f4a4 100644 --- a/server.py +++ b/server.py @@ -1,11 +1,14 @@ import json -from flask import Flask, make_response, redirect, request, jsonify, render_template, send_from_directory +from flask import Flask, make_response, redirect, request, jsonify, render_template, send_from_directory, send_file from flask_cors import CORS import os import dotenv import requests import CloudFlare import datetime +import qrcode +import re +from ansi2html import Ansi2HTMLConverter app = Flask(__name__) CORS(app) @@ -15,6 +18,13 @@ dotenv.load_dotenv() address = '' handshake_scripts = '' +restricted = ['ascii'] + +sites = [] +if os.path.isfile('data/sites.json'): + with open('data/sites.json') as file: + sites = json.load(file) + # Custom header def add_custom_header(response): response.headers['Onion-Location'] = 'http://wdbrncwefot4hd7bdrz5rzb74mefay7zvrjn2vmkpdm44l7fwnih5ryd.onion/' @@ -116,7 +126,7 @@ def index(): except: repo_name = "nathanwoodburn.github.io" repo_description = "Personal website" - git = {'repo': {'html_url': 'https://example.com', 'name': 'nathanwoodburn.github.io', 'description': 'Personal website'}} + git = {'repo': {'html_url': 'https://nathan.woodburn.au', 'name': 'nathanwoodburn.github.io', 'description': 'Personal website'}} custom = "" # Check for downtime @@ -140,12 +150,12 @@ def index(): if request.cookies.get('HNS'): - return render_template('index.html', handshake_scripts=handshake_scripts, HNS=request.cookies.get('HNS'), repo=repo, repo_description=repo_description, custom=custom) + return render_template('index.html', handshake_scripts=handshake_scripts, HNS=request.cookies.get('HNS'), repo=repo, repo_description=repo_description, custom=custom,sites=sites) if address == '': address = getAddress() # Set cookie - resp = make_response(render_template('index.html', handshake_scripts=handshake_scripts, HNS=address, repo=repo, repo_description=repo_description, custom=custom), 200, {'Content-Type': 'text/html'}) + resp = make_response(render_template('index.html', handshake_scripts=handshake_scripts, HNS=address, repo=repo, repo_description=repo_description, custom=custom,sites=sites), 200, {'Content-Type': 'text/html'}) # Cookie should last 1 week resp.set_cookie('HNS', address, max_age=604800) return resp @@ -268,7 +278,11 @@ def donate(): token = t break if not isinstance(token, dict): - token = None + token = { + "name": "Unknown token", + "symbol": token, + "chain": crypto + } address = '' domain = '' @@ -297,17 +311,54 @@ def donate(): cryptoHTML += '
Or send to this domain on compatible wallets:
' cryptoHTML += f'{domain}' + cryptoHTML += 'QR Code' + + copyScript = '' cryptoHTML += copyScript return render_template('donate.html', handshake_scripts=handshake_scripts, crypto=cryptoHTML, coins=coins,default_coins=default_coins) +@app.route('/qrcode/') +def addressQR(data): + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, + ) + qr.add_data(data) + qr.make(fit=True) + qr_image = qr.make_image(fill_color="#110033", back_color="white") + + + # Save the QR code image to a temporary file + qr_image_path = "/tmp/qr_code.png" + qr_image.save(qr_image_path) + + # Return the QR code image as a response + return send_file(qr_image_path, mimetype="image/png") + +@app.route('/supersecretpath') +def supersecretpath(): + ascii_art = '' + if os.path.isfile('data/ascii.txt'): + with open('data/ascii.txt') as file: + ascii_art = file.read() + + converter = Ansi2HTMLConverter() + ascii_art_html = converter.convert(ascii_art) + return render_template('ascii.html', ascii_art=ascii_art_html) + @app.route('/') def catch_all(path): global handshake_scripts # If localhost, don't load handshake if request.host == "localhost:5000" or request.host == "127.0.0.1:5000" or os.getenv('dev') == "true" or request.host == "test.nathan.woodburn.au": handshake_scripts = "" + + if path.lower().replace('.html','') in restricted: + return render_template('404.html'), 404 # If file exists, load it if os.path.isfile('templates/' + path): return render_template(path, handshake_scripts=handshake_scripts) @@ -359,8 +410,6 @@ def hnsdoh_acme(): print(record) return jsonify({'status': 'success'}) - - # 404 catch all @app.errorhandler(404) def not_found(e): diff --git a/templates/404.html b/templates/404.html index 81f7691..15e9476 100644 --- a/templates/404.html +++ b/templates/404.html @@ -1,25 +1,50 @@ - + - - Nathan Woodburn - - + + + Nathan.Woodburn/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -




-

Space Invaders destroyed this page!

- Take revenge on them! -







-




Use Space to shoot and   to - move!    or

- - - + +

HTTP: 404

+
+
this_page.found = false;if (you_spelt_it_wrong(this_page)) {
try_again();
else if (!this_page.content) {
alert('You're lost! I'll send you back home');
window.location = home;
}
+
+ + + + \ No newline at end of file diff --git a/templates/ascii.html b/templates/ascii.html index e39a935..b9e7df8 100644 --- a/templates/ascii.html +++ b/templates/ascii.html @@ -24,25 +24,33 @@ - - - + -
-


NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXKKKKK00000O0K000000000KKKKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXKKK00000000000000O0K00000000000000000000KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXKKK00000000000000000O00O0K0OO0000OOOOO0000000000000000KKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXKK0000000000000000000000KKK0KKK0KK00OOOOOOOOOOOOOOOOkOOO0000000KXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKK000000000O0OOO000O00KXXXXXKKKKKKKKKKKKKKKKK0OkkkkkkkkxddxddkOOOO00000KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXK00000000OOOO00OOOO00KXXXK000000000KK000OkkkO0KKK0OkxxkkkkkkxdodxkkOOOOOOOO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0000000000OOOOOOOO0KXNNXKOO0KKK0000OOkkkO0KK0KKXXKXXKOkxxxxkkkkkxxkkkkkkOOkkOO0KXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0000000000000000OO0KXNX0O0NX0OOOkxOKXXXOxxxkKNNX0O0KXK0XXOxdxxxxxxxxdxxxxxkkkkkkOOO0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK000000O0000OO0OOOOO0XNX0000XNXKKK0OOKXWWNXK0kxxkO0OOOKKOxx0XKkddxddddxdddddxxxxxkkkkkOOKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0000OOOOOOOOOOOOOOOKNN0O0XKO000OkO0KXXXNNXKOOOK000KOkxk0KkdxOXXOdddddddddddddxxxxxxxxxkkOOKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK00OOOOOOOOkkOOOOOOO0XX0k0XKOkkKWNNK0OKNWWWWNX00KXKXNKxddk0kdoxOXXkoddddoddddddddddddddddxkkO0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK00OOOOOOOkkkkkOOOOO0XX0kOKXK00k0NNXNNWWWWWWWWWNNNXXXX0xdkKNKkoox0X0doddddddddddddddddddddddxkk0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX00OOOOOOOOkkkkkkkkkkOKNKO0XWWXKOkOKXXXK0KNWWWNNK0KNNWN0kOKXK0OOddk0KOoloooooddddddddddooddddddxkkOXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOOOOOOOkkkkkkkkkkxOXNKOKWWKOkkkxkKNNNX0KNWWNXXNNNNNXOxxk0KkooodOKKkooooooooooddddooooooooddddxxkO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOOOOOOkkkxxxxxxkkkxkKNX0XX0OOkxxxxk00OO0KKXNXKO0KX0OkodkK0koloxk00Ododdddddooddddoooooooooooddddxdk0KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOkkkkkkkxxxxxxxxxxxxxOXNXKOxk00OkOOkxkOkxxddkkxdONWNXX00K0xlodkO00Odddddddddddddddoooooooooooodooddxk0KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OkkkkkkkxxxxxxxxxxxxxxxxxOXNX0kxxO00KNNNWWNXK0xxOOOKNNXKOkxxkkkO0K0kxddxxdddoolloollllllllllllllllcccllldOOOKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0Okkkxxxxxxxxxxxxxxxkxxxxxkxk0XNK0000OOO0000000kdxkkkkOkdddxkO0KK0kxdoodddoollclllcc::::::ccc:::;;,,'''''';coox0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0OkkxxxxxxxxxxxxxxxxkkxxxxkkkkxkO0KKK00OOOkkkkkxxdxkkkkO0KKK00Oxdollloollllccc::;;;;,,,,;;;;;;,,'..........,;::coOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0kkxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxkOOOOO0KKKKKKK000K0Okkkxxxdolloollccccccc::;;,,,,,,,;,,,,''.............',:::::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOkxxxxxxxxxxxxxxxxxxxxxddddxxxxxxxxxxxxxxkkxxxkkxxxxdooooooodooolllccc:::::::::;;;;;;;;;,'...............',;;;:::;:xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOkxxddddxxxxxxxxxxxxxxddddddddddxxxxxxxxxxxxxxxkkxdxxxdddooooolllllooolllccccccccccc:;,'..................';;;;;;::;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0Okxdddddddddddddxxxxxxxxxxxxxxxxxxxxdddddddoodxxxxxxdolccccccc:ccclllllcc::::;;;;;::::;,'.................,,,,;;;;::;l0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXKkxddoooooooooooddddddxxkkkkkxxddddddddoddddxxkkxxdoooollloooolllllllllc::;,'.......''',,,,'...............',,,;;;;;:;:kXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXOdoooolllloooodddddddddxxxxdooooodxxxxxdooolllc;,,'''',;:ccllloolooollc::;;;;;;;;;;;,'.....................',,,,;;;;::;o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOxollllllllloodddddoollcllooddddddddddxxxxxxxkkOO00000000KKKKKKK0000OOkkkxddoooooolc::;,''''''...............',,;;;;;;:;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0xocccccccllloooollc::::clooddxkkOO00KXXNNXXXXXXXKKKXKKXXXXXKXXXKKKKKKKKKKKKKKXXXXXKK0Oxdollc:;;,'.............',,;;;;::::dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXKKKKKKKKKXXXXXXXXXNNNNNNNNNNNNXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0dc:;;;;;;::cccc::ccloodxkkO00KXNNXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00KKKKKK0kxolc;'..........',;;;;;;:::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
KKKKKK0000000KKKXXXXXXXXXXXXXXXXXXXXXKKKKKKXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0xl:,'''',;::cclloodxkO0KXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000KKK00000000KK0000000KK0Okdc;'.......',;;;;;:::lONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000000OOOkkOO000KKKKXXXXXXXXXXXXXXKKKK000KKKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0koc;,,;:cooddddxkO0KXXXXXXXXXXXKKKKKKKKXXXXXXXKKK00OOOOOOkkkOOOO00KKKXXXKKKK00000000000000000000OOOO0K0Odc,.....';:;;::::lONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOkkkxxxxkkOO00KKKKKKKKKKKKKKKKK000OOO00KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOxollodxxxxxkk0KXXXXXXXXKKKKKKXXXXXXK0kkxdollc::;;,,,,'''''''',,;;::ccloodxO00KKK00OOOOOOOOOOOOOOOOOOOOO00Odc,...';;:::::lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OkkkkkxxdddxxkOO0000000000000KK0000OOOkkkOO0KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXK0OOOkxxxxkO0KXXXXXKKKKKKKKXXXK0Oxdlc;,'''.....................'',,,,''...''',;cloxkO000OOOOOOkOOOOOOOOOOOOOOOko:'..';;:::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
kkkkkxxxxxxkkO000000OOOOOOOOOOOOOOkkkkxxxkkO0KKXXXXXXXNNXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNXXK0K0kxdxO0KKKKKKKKKKKKXXXK0kdl:;,.............................',;;;;,'..'',;,,''..',;cldkO00OOkkkkOOkkkkkkkOOOkkxdc,.'::c:cxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xkkxxxkkkOOO00000000OOkkxxxxxkkkkkkkxxxxxxkkO0KKKXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNXKKKOddk0KKKKKKKKKKKKXX0kdl:,'.................................,;;;;;,,'',;;;;;;,''',,,''',;cldkOOkkkkkkkkkkkOOkkkkkkdc;::cc:o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxkkkkkOO0000KKKKK0OOkxxdddddxxxxxxxxxddddxkOO0KKKXXXXXXXKXXXXXXXNNNNNNNNNNNNNNNNNNNNNXKOkxk0KKKKKKKKKKKXKOdl;,'...................................',;;;;;,,,;;;;;;;;;;,,,,,,,,,;,''',:ldkOOkkkkkkxkxxkkkkkkkxl::cclONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxkkkkOO000KKKKKKK00OkddoooddddxxxxxxdddddxxkO000KKKKKKKKKKKXXXXXNNNNNNNNNNNNNNNNNNNNNX0OOO0KKKKKKKKKK0koc,,',,,''.............'''''..............',,;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,'',:ldkOOkkkkkkkkkkkkkko;,::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxkkOO0KKKKKKKK0OkxdooooodddxxxxxxxxxxxxkkO0000000000000KKKXXXXNNNNNNNNNNNNNNNNNNNNX000KKKKKKKKKKko:,,,;;;;;;;,,,,,,''..'',,;;,'............',,;;::::::::::::::;;;;;;;;;;;;;;;,;;;;,,,,,'';:ldkOOOkkkkkkkkx:..;::dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddddxxxkO00KKKKKKK0OkxdoolooodxxxkkkkOOOOOOOO00000000OOOOOO0KKXXXXNNNNNNNNNNNNNNNNNNNNXK0KKKKKKKK0xc;,;:::::;;;;;;;,,,,,,,,;;;;;;,'..........',;;::::::::::::::::;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,;cldxkOkkkkxl'..';:oKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddddxxkO00KKKKKKK0OOkxdooooddxkkkOO000000000000000OOkkkkkO00KKXXXXXNNNNNNNNNNNNNNNNNXKKKKKKKKKOd:;;:ccccc::::;;;;,,',,,;;;;::::;,'.......',;;::::::::ccccc:::::::;;;;,,,,,,,,,,,,,,,,,'',,;;;;;;;,,,;cloddl:'....';dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dooddxkkO00KKKKKKK00OkkxdddddxxkOO0000000000000000OOkkxxxxkO0KKKXXXXXXXXXXXXXXXNNNNNXXKKKKKKKOo:,;:cllcccc:::;;;,,,'''',,,,;;;;;;,,'''',,;;:ccccccccc:cccccccccc:::;;;,,,,'''''''''''''''',,;;;;;:::;;,''''........':lolox0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ooodxxkOO0KKKXXXKKK00OOkxxddxxkOO0000KKKKKKKKK0000OOkxdddxxkO00KKKXXXKKXKKXXXXXXXXXNNXKKKKKOo:,;;:clllllccc:;;,,''.......''',,,,,;:::ccccccccclllcccccccccccclcc:::;;,,'''...............'',;;;;::::;;'..............';::cld0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oodxxkkO00KKXXXXXKKK000OOkkkkkkOO0000KKKKKKK00000OOkkxdoddxkOO000KKKKKKKKKKKKKXXXNNNNXKKKOd:;,,,;:cllllllc:;,''................',;;:ccclllllllcllllcccc:::ccc:;,,,'''......................',,;;;;;;;;,'...........,;:cllllloOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddxkkOO00KKKXXXKKKKK000OOOOkkkOOO0000KK00000000OOkkxddooddxkOOOO000OOOOO00000KXXXXXNXK0xc;;;,,,,;cllolllc:;,,'''''''''...........'''',;;:cccccclllcc:::;;;;;;,,''.............'',,,,,,,,,',,,;;;;;;;;,'.........',;:cllllllco0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxkkOO00KKKKKKKKKKK00000OOOOOOO0000000000000OOkkkxddooddxxkkkkOOkkkkkkOOOO0KK0OkkOOkoc::;;;,,,;clooollc::::::::ccccc:;,'........'''',,;;:cclllllccc:::;;;;;::::;;;,,,,;;::ccllllccccccc::::;;;;;:;;,'........',;:ccccllllccxXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxxkkkOO00000KKK00000000OOOOOOOOO0000000000OOOkkkxxdooodddxxxxxxxxxxxkkkkO000kxxxxxddoc:;;,,,,;clooooolllooooooodddddooolcc::::ccccccc:::clllllllcccc::::ccllllloooooooooooooooollllllllccccc:::::;,'......',;:clcc:::ccccco0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxxxxxkkOOOOOO000OOOOOOOOOOOOOOOOOOOOO0000OOOOkkkxddooooooddddddddddxxxkkO00kxddxdddddol:;;;,,;cloooooddddddddddddddoooolllllllooodddolccloooooollccccc:ccclllllc:;;,,,,,,;;:cclllllllllllccc::::;;,'.....',;::cccc::::ccc:ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxdddddxxkkkkkkkOOkkkOO000OOOOkkkkkkkOOOOOOOOkkkkxxddoooooooooooooodddxxxkO0Oxddddddddddol:;;;,;cloooooddddddddool:;,,,''''',,,;;:cloooollloooooollccccc::ccccc:,'.....'''',,,'''',:cllllccccc:::::;,''...',::::::cc:::::cc::xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dxdddddddddxxxxxxxxkkkOO00000OOOOkkkxkkkkkkkOOkkkxxxddoooooollooooooooddxxxkO0kdooooooddddooc:;;;;clooooooooodddl:,''.....'',,:c:;,',;ccllllooollccc:::::::::::;,.......'',,,,;;;;,,,,;:ccccccc::::::;;,''',;:::ccccccc::::::::xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddoooooooddddxxxxxxkkOOOOOOOOOOkkxxxxkkkkkkkkkkxxxddoooollllloooooooodddxxkOOkoloooooododddol::::looooollllllllcc:cc::;;,,,,,;;;,,''',;:cccclcc:::;;;;;;;;;;:;,''',,;;:::cccccccccc::::::::::::::::::;,,,,;;:::;:clllc::;::::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
doooooooloooodddddxxkkkOOOOOOOOkkxxddxxxkkkkkkkkxxdddoooollllooooooodddddxxkOOkollllloodddddolcc:clooooollllllllllloooooooooolllllcccc:cccc:cc::;,,,,,,,,,,,;::::::::ccllllllooolllccc:::::::::::::::::;;,,;;:::;::cllcc:;;:::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddoooolllllooooodddxxkkkOOOOOkkxddoddddxxxkkkkkkkxxdddddoooooooooooddddxxxkkOOkolcclloddddooollccloooooooolllcccllloooddddddddooollllccc::::::;;,,,,''',,,,,,,;::::cclllllllooollllccc::::::::::::::::::;;;;;;;:::::cccc::;:::xKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxdddoolllllloooodddxxkkOOOOkxdoooooodddxxkkkkkkkkxxxdddddodddddooodddxxxkkkOOOxlccloodoooolllolllodooooooollllllllloooooooooooollllc:::;;;;::;;,,,,,,,''''''',,;;:cccccllllllllllcccc::::::;;;::::::::::::::::;;;::::::::;;:o0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxddooolllllloooodddxxxxkxxxdoollllooddxxxxkkkkkkkxxddddddddddddooodddxxxkkkkOkdlcoxxdoollllooooodddooooolllllllllllllllooooolllcc:::;:::::::;;;;,,,,,'''''''''',,;::::ccccccccccc:::::::::::;;::::::ccc::::cc:::;;,,;::;;;lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxddddooollllllloooddxxxxxxxxddollllooodddxxxxxxxxxxxdddddddoodddddddddddxxxxkkkxoldkxollccloxxdodxkddoooollllllllccccccccccc::::;;;;:::::::c::::;;,,,,,,,,''''',,,,,,;;;;;;;::::::::::::::::::::::::cccc::::clc:;,,',;:::;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxddddoooollllllloddxxxxxxxxxxdooooooooooodddxxxxxxdddddddoooodddddddoodddddxxxkkxddxxoc::::okkxddxkxdoooolllllllccc:::;;;;;;;;,,;;;;:::::ccccc::;;;;;;;;,,,'''',,,,,;;;;;;;;;;;;;;::::::::::::::::::ccc::::cc:;,''',;:::;:dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddddddooooollllllooddxxxxxxxxddddooooooooooooddddddddooooooooddddddooooooooododdxkOkkxdoc;;;:ldxdddkkxdooollllllccc::::;;;;;;;;;;;;;;;::::cccc:::;;;;;;;;;;,,,'',,,,;;;;;;;;;;;;;;;;;;;;;;:::::::::::ccc::::c:,''',,;:::::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oodddoooollllllllloooddxxxdddoodooooooooolllllllllllllllloooooodoooooooooooooooodxkOOkxxdc;;;;:odddxkxdoooollllccc::::::;;;;;;:::::::::::ccccc::::;;;;;;;;;,,,,,,,,,;;;::::::::::::::::::::;:::::::::ccc:;::c:,',;::::;;:o0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oooooooolllllccllllooooddddoollooolllllllllcclllllllllllllloooooooooolllllllloooodxkOOxdx00ko;,coddxOkdddoollllllcccccc:::::::::cccccccccccc:::;;;;;;;;,,,,,,,,,,,;;;;:::::cc::ccccccc:::::::;;:::::cccc:::::::ccccc::;;lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lllllloollllllllllloooooooollcclllllllcccccccccllllllllcllllllllloollllllllllooooodxkOOOOKK0xolloddxOOxdddoollllllllllllcccccccclllllc:::::::;;;;;;;;,,,,,,,,,,,,,;::ccccccccclllccccccccc:::::::::cccc::::::::cccccc::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lcccclllllllllllloooooodddoolccccccccccccccccllllllllllccccccllllllllcccllllooooooodxOKNNX0xddddooddk0Oxddoooooooooooollloooooooooolc:;,;;:::::::::;;;;,,''''''..',:cllllllllllllllllllllccc::::::cccccc::cc:::::ccllclkKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lcccccccccclllllloodddddddddollcc:::::cccccccllllllllllccccccccccccccccccllloooooodddk0XXKOxooooooodk00kddddddddddoooooooddddddoooolc::;::ccccccc::::::;,,,,'''''',;clllooooooooooollllllllcc::::ccccccccclllllllclodx0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cc:::::cccccllllloodxxxxxddddoolcccccccccccccllllllllllccccccccccccccccccllloooodddddxk00OOkkOOkxddxk00Oxddddddddddddddddddddoooooolllllllooooolllccccc::::;;,,;;;;:ccllllooooddddoooollllllccccccccccccokOkkkkkkkO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::::::::ccccclllloddxxxxxxxxdoolllllllllccccllllllllllcccccccc:::cccccccclllooooddddxxxkkkOOkkkkkkkO0K0kxddddddddddddddddddooooolllodddddddddddoooollllllccccccccc:cccccllllloodddooooollllllccccccccclkXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
::::::::::ccccccclloddxxxxxxxdddoooolllllllllcclcclllllccccccc:::::c:cccccllllooooooddddddxxxxxxxdddk0K0Oxdddddddxddddddooooloolllllloodddddxxxxxddddooolllllllllcc:ccccccccclllooddooollllllllcccccccclOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
::::;;:::::::ccccccloodxxxxxxxdddddoooollllllccccccllcccccccc::::ccc:::cccccllloooooodddoolllllllooox0K0Okxddddddddddddoolllllllllllllllooooddxxxxxxddoolllcccc:::::::::::::ccccclooooollllllllccccccccoOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::;;;::::::::::cccclloddddxxxxddddddooolllllcccccclccccccccccccccccccccccccccllllllllolllccccllllooxO00Okxddddddddddoollllllllllllllllllllooddxxxddddooollccc::::::::::;;::::::::clooolllllllcccccccccd0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;;;;;;:::::ccc::cccclloodddddddddddddooollllllcccclllllcccccccccccccccccccccccccccccccccccc:::cclllodk0KOkxddddddddooolccllllllcccllllllllloooddddddddooollcc::::::::::::::::::::::cloollllcclcccccccclxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;,;;;;:::ccccccccccllooodddddddddddddoooolllllllllllllllllccccccccclllllllcccccccccccccc:::::::ccllodk000Oxxddddddooolc:cllllllllllloolllllloooooooooolllllcccccccccccc:::cccccccc::loolllccccccccclllokKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;;::cccccccccclllooooooodddoooooooodddoolllllllooollllllllllllllllllllccccc::::ccccccc:::cccclloodO00Okxddddddoooc::cllclloodooooooooooooooooooooooooolllllccccccclcccccccccccc:cllllcccllllcllllldOKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;:::ccccccccclllooooooooooooooooddxxxxxxdooooooooolllllllllllloooooolllccccc:::cccccccccccllllloodxO0Okxddddddoool::cllllcccccccllloooooooooooooooooolllccc:::::;;;;;;;;::cccccccllllccclllllllllok0KXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;:::ccccccccllllooooooooooooloodxxxxxxxkxxdoooooooolooooolloooodddddooolllllcccccccccllllllllllooodk0Okxxddddoooolc:clllllcc:;;,,,,,;;;;;::::::::::::;;;,,,,''''',,,;;;;:::ccclllllllcccllllllllodk0KKKKXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;;:::ccccccccllloooooooooooolooxxxxxxxxkkxdooooolllllooooooooddddddddddooollllccccllllllllllllllllodO0Okxxdddodddoolllllllllllllcccc:::cccccccccccclccccc:::::::::::::::::::cclloolllllllllllooodxOO0000KKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;;;;::cccc::::cccclllooooooooooollodxxxxxkkkkxddooollllllloooooodddddddddddoooolllllllllllllllllllllllcldkOkxxxddddddddoolllllllllllloooooooooooooooooooooolllcccccc::::::::::::cclooollllllllooooodxkkOOOO00KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::cccccccc::::::ccclloooooooooooolodxxkkkkkxxddooolllllllooooooddddddddddddooooollllccllllllllllllccccccokOkxxxdddddddddoollllllllllloooooooooooooooooooollllccccc::::::::::::::clllllllllloooddddxxkkkkkOOO000KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccllllcccccc:;;:::::cclloooooooooolloodxxxxxdddoooollllllloooooooddddddddddoooooolllcccccccllllcccc::::::cdOOkxxddddddddddooooollllllloooooooooooooooolllllllllccccccc:ccc:cc::cccclllllllloooddddxxkkkkkkkkkOO000KKKKXXXXXXNNNNNNNNNNNNNNNNXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
clllllllcccc:;;;;;;;::cccllllollllllooooddddddooolllllllllloooooooooooooooooooooollcccccccccccccc:::::::::okOOkxdddddddddddooooooooooooooddddddoooooooollloollllllllcccccccccccccccclllllllooddddxxkkxxxxkkkkkkOOO000KKKKXXXXXNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cllooollllcc:;;;;;,;;;:::cccccllllllloooooooooolllllllclllllooollllllllllllloooolllcccccccccc:::::::::::::lxkkkkxddddddddooooooooooooooooddddddoooooooolloooooollllllllccccccccccccccllllloodddddxxxxxxxxxxxxxkkkkkOOO00KKKXXXXXXXXXXXXXXXXKKKKKKKKKKKKKXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccllooolllc::;;;,,,,;;;::::::cccccclllllllllllllcccccccccllllllllccccccccclllloolllcccc:::ccc::::::::::::cokOxxkkxdddddoooooooooooooooooooooooooooolllllllllllllllllllcccccccccc:::cccllloooddddoddxddxxxxxxxxxxxxxxkkOO000KKKKKKXXXXXXKKKK000000000000KKKKKKKKXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccllcccc:::;;;;,;;;;;:::::::::::ccclllccccccc:::::ccccclllllcccccccccccllllolllllcccccc:::::::::::::ccclxOkddxkkxddddooooooooooooooooooooooolllccccccc::ccccccccccccccccc::::::::clllooooddollodddddddddddddddddxxxkkOOO000000KKKKKK0000OOOkOOOOOOOOO000000KKKKKKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccccccc::::;;;;;;;;:::::::::::::::::::::::::::::::::ccccllllccccccc:cccllllllllllllcccccccc::::ccccccccldOOdodxxxxddddooooooooooooooooolllllcccc:::::;;;;;;;;;;;;;::cccc::::::::cclllooodolcccoooddddddoodooddddddxxxkkkkkOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOO00000000KKKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccccccc::::;;;;;;;::::::::::;;;;;;;;;;;;;;;;;:::::::ccccllllcccccc::cccllllllloooolllccccccccccccccccccldOOxooodxxxxddooooddddddooooollllcccccc:::::::;;;;;;,,,,,,,;:cc:;;::c::cccllooodolc::coooooooooooooooodddddxxxxxkkkkkkkkkkkkkkkxxxxxkkkkkkkkkkkkkOOOOOOkOOO00KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccccccc:::::::;;;:;;;::::::::::;;;;;;;;,,;;;;;;;::::::::ccccccccccc::::::ccllllooooooolllllcccccccclcccccccoOOxoooodxxxxddddddddddddooooolllcccccccccccccc:::;;,,;;;;;;:ccc:;:ccccccllooddolc:::clollloooooddddddddddddddxxxxxxxxxxxxxxxxxddxxxxxxxxkkkkkkkkkkkkkxxxkkkOO00KKKKXXXXXXXNNNNNNNNNNNNNNNNNNNNNN
::::::;;;;:::;;;;;;;;::::::::;;;;;;;;,,,,,,;;;;;:::::;::::ccccccc::::::::ccllooooodooooollllcccclllllllccccok0xoloooodxxxxdddddddddoooooooolllllllllllllcccccc:;,,;:::cccccc:cccccllooooolccc:::clllllooooodddxxxxxxxxddddddddddddddddddddddddddddxxxxxxxxxxxxxxxxxxxxxxkkOO000KKKKXXXXXNNNNNNNNNNNNNNNNNNNN
::;;;;,,,;;;;;;,,,;;;;::::::;;;;;,,,,,,,,,,,,,;;;;;;;;;;::::::::::;;;:::ccllooooddddddooollllcllllllllllcccokOxollooooddxxxxddddddddoooooooooooooooooooollllll:;;;:ccllccccccclllllooooolcc:::::clllllloooodddxxxxxxxxxdddddoooddddddddddddddddddddddxxxxxxxxxxxxxxddddddxxkkkOOO00KKXXXXXNNNNNNNNNNNNNNNNNN
;;;,,,,,,,,,,,,,,,,;;;;;;;;;;;,,,,,,,,,,'',,,,,;;;;;;;;;;;;;;;;;;;;,;;::cclloooddddddddoollllllllooooolllccok0kollllooooddxxxxdddddddoooooooooooooooooooooooolc:::cllllllccclllllooooolccc::::::ccccccllloooddxxxxxxxxxdddddooooooooodddddooooooooodddddddddxxxdddddddooooodddxxkkOO0KKKXXXXXXNNNNNNNNNNNNNN
,,,'',,'''',,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,;::cclloooddddddddooolllllllloooolllcclkOkollllooooooddxxxxxxxxdddddddddddddddddddddooooolllllllllllllllloooooollccc::::::::cc::cccllooodddxxxxxxxxdddddooooooooooooooooooooooooooooooodddddddddoooolllloodddxkOO00KKKXXXXXXXNNNNNNNNNN
,,''''''''''''''',,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;,,,,,,,,;::ccllooooddddoooooolllllllllllllllcclkOxolllllloooooooddxxxxxxxxxxddddddddddddddddddddoooooooooollllooooooollccc::::::;;::c::::::ccllooddxxxxxxxxxddddoooollllllllooooooooooooooolllllooooodoooollllllllloodxxkOOO00KKKKKXXXXXXXXXXXX
,,'''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,;;::cclllooooooooooooollllllllllllllccclkOxllllllllooooooodddxxxxxxxxxxxxxxxxxxxxxxddddddddddddoooooooooooolllcccc:::::::;;;:::;;;;;::clloodddxxxxxxxddddooolllllclllllooooooooooolllclllllloooolllllllccclloooddxxkkkOOO000KKKKKKKKKKKK
''''''','',,,,'''''',,,,,,,,,,,,,,,,;,,,,,,,,,,,,,;;;;;;;;;;,,,,,,,;;::cccllllllooooooooooolllllllllcccccc:lxkdlllllllloooooooooddddxxxxxxxxxxxxxxxxxxxxxxxdddddddddoooooooolllccccccc:::::::;;;::;,,;;;;::clllodddxxxxdddddooooolllcccccclllooooooolllcccccccccllllllllllllllllloodddxxxxxxkkkOO00000000000
'''',,,,,,,,'''''''''''',,,,,,,,,,;;;;;,,,,,,,,,;;;;;;;;;;;;,,,,,;;::cccclllllllloooooooooolllccccccc::::::lkOdllllllllloooooooooooddddxxxxxxxxxxxxxxxxxxxddddddddddoooolllccccccccccc::::::;;;;;:;,,,,;;;:cclloooddddddddooooollllccc::::cccllllllllccccccccccccccllllllllllllllooddddddddddxxxkkkOOOOOkkkk
'',,,;;;,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;,,,;;;::cccllllllllllloooooooooolllccccc:::::::lxkdlllllllllllooooooooooooooodddddddxxxxxdddddddddddooooolllccccccccccccc:::::::;;;;;:;,,,,,,;;::clllooooooooooooollllcccc::::::cccccccccccccccccccccccllllloolooooooddddxdddddddddddxxxxxxxxxxx
',,,;;;;;,,,,''''''''''''''',,,,,,,,''''',,,,,;;;;;:::;;;;;,,,;;:::cclllllllllllloooddddooooolllcccc:::::::lxkdlllllllllllloooooooooooooooooooodddddddddooooooooolllllccccccccccccc::::::::::;;;;:;;,,,,,,,;;:cccllllllllllooollllllcc:::::::::::::::::::cccccccccclllloooooooooddddxxxxdddddddddddddddddddd
,,;;;;;;;;,,''''''....'''''''''''',,''',,,,,;;;;;;:::::;;;;,,;;:::ccllllllllooooooddddddooooolllccccc::::::lkOdlllllllllllllllooooooollollloooodddddddoooooooooooollllcccccccccccccc:::::::::;;;;:;,,,,,,,,,,;;:::::cccccclllllllllllcccc::::::::;:::::::::ccccccccclloooooooooddddddxxdddddddoooooooooooodd
,;;;;:;;;;,,''..........''''''',,,,,,,,,,;;;;;::::::::;;;;;;;;:::ccccllllllloooooddddddddoooolllccccccc::::lkOdllllllllllloollloooooooooooooooddddddddddoooooooooolllllcccccccccccc::::::::::;;;;:;,''''''',,,,;;;;:::cccccccccccllllccccc:::::;;::;;;::::::cccccccclloodddddoooodddddddddddoooooooooooooooo
,;;;;;;;;,,''............'''',,,,,,,;;;;;;;::::::::::;;;;;;;;:::cccccccllllloooooddddddddooolllcccccccccc:cdOOxollllllllloooooolooooooooooooodddddddddddddddddooooollllllcccccccccc:::::::::;;;;;::;,''''''',,,,,,;;;;:::cccccccccccllcccc:::::::::;;;;;::::::ccccccloooddddddoooooddddddooooooddddooooooooo
,,;;;;;;,,''.............''',,,,;;;;;;;::::::::::::::;;;;;;;:::ccccccccclllloooooddddddoooolllccccccccccccok00xolllllllllllllloooooooooddddddddddddxxxxxxxddddooooollllllccccccccccc::::::::;;;;;;:;,,''''''''',,,,,;;;::::ccccccccccccccc::;;;::;;;;;;;;;;;:::::cccllooooodddooooooddddooodddddddddoooollll
'',,,,,,,,'.............''',,,;;;;;;::::::::::::::::::;;:::::::ccccccccllllloooooooooooooollllccccccccccclx00Okolllllllllllllloooooooooodddddddddddxxxxxxxxxdddoooolllllllcccccccccccc::::::::;;;;::;,,,''''''''',,,,;;;;::::::::cccccccc::::;;;;;;;;;;;;;;;;:::::cclllooooooooooooddddddddddddddddoooollllc
''''',,''''...........''''',,,,;;;;;::::::::::::::::::::::::::ccccccclllllllloooooooooooollllcccccccccllldOK0Okdollllllooooolloooooooooodddddddddddxxxxxxxxxdddooooollllllccccccccccccc::::::;;;;;;;;;,,,''''''''',,,,;;;;;;;;:::ccccccc::::::::;;;;;;,,,,,;;;;::::cclllooooooddddddxxxxxddddddddddooolllccc
'''''''''........'''''''',,,,,,;;;;;;;;;;;;;;::::::::::::::::ccccclllllllllllllllllllooollllllllllcccllldOKK0Okdolllllooooooooooooooooodddddddddddxxxxxxxxxxxdddoooollllllcccccccccccc:::::::::;;;;;;;;;,,'''''''',,,,,;;;;;;::::::::::::::::::::;;;;,,,,,,,,,;;;:::ccclloooodddxxxxxxxxxxxxxddddddoolllcc::
'''''''''.''''''''',,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;:::::;;::::ccclllllllllllllllllllllllolllllllllccclllx0XX0Okxdollllloooooooooooooooooodddddddddddxxxxxxxxxxdddoooolllllccccccccccccc:::::::;;;;;;;,;;;,,,'''''',,,,,,,;;;;;;:::::::::::::::::::;;;,,,''',,,,,;;;;::ccclloooddxxxkkkkkkxxxxxxxdddoolllcc:::
,''''''''''',,,,,,,,,,,,,,,,,,,,,;;;;;;;,,,,,,,;;;;;;;;;;::::ccllllloooooollllllllllllloolollollllclclxKNXK0Okxdolllllooooooooooooooooooodddddddddddxxxxxxxxxdddoooolllllcccccccccccccc::::::;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,;;;;;;;:::::::cccccc:::;;,,'''''',,,,,;;;::cccllooddxxxkkkkkkxxxxxxxddoolllcc::::
,''''''''''',,,,,;;;;;;;,;;;;;;;;;;;;;,,,,,,,,,,,;;;;;;;;:::cccllloooolllllllllllllllllooooooolllllloOXNNXKOkxddoolllooooooooooooooooooooodddddddddddddddxxdddddoooolllllcccccccccccccc::::::::;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;:::cccccccccc::;,,'''''''',,,,,;;::cccllooddxxxxkkxxxxxxxxxdddoollccc::::
''''''''''',,,;;;;;;;,,,,;;;;;;;;;;;;,,,,,,,,,,,,,,,;;;;::::ccclllllllllllllcclllllllloooooooooooloxKNNNXK0Okxdoooooooooooooooooooooooooodoodddddddddddddddddddddoooollllccccccccccccccc:::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;::cclllllcc::;,,'''''''''''',,,;;::ccclooddxxxxxxxdddddddddddoollccccccc
''''''''',,,,,,;;;;,,,,,,;;;;;;;;;;;;,,,,,''''''',,,;;:::cccccllllllllllccccccccccllllloooooooooodONWNNXKK0kxddoollloooooooooooooooooooooooodddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;:ccllllllcc:;;,'''''''''''''',,,;;::ccllodddxxxxxddddddddooooollcccccccc
''''''',,,,,,;;;;;;,,,;;;;;;;;;;;;;;;,,,,,''''''',,;;:ccclllllllllllllccccccccccccccclllloooooodkKNWNNXXK0Okxdoolllllooooooooooooooooooooooddddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;;,,,,,,,'''''''',''''',,,,,,,;;:cllooolllc:;,,'''''''''''''',,,;;::ccloooodddddddooooooooollllcc:::::cc
'',,,,,,,,;;;;;;;;;;;;;;;;;;;:::;;;;,,,,,,,''''',,;;:cccllooooollllllcccc::::::::::ccccllllllokKNWNNXXKK0Okxdoollllllloooooooooooooooooooooddddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;;,,,,',,,''''''''''''',,'',,,;::clloooolcc:;,,,,,,,,,''''''',,;;::cclloooooodddooooooollllllcc:::::::::
',,,,,,,;;;;:::::;;;;;;,,;;;:::::::;;;,,,,,,,,,,,;::cclllooooooooolllcccc::::::::::::ccldxdoxKNWWNNXXK0OOkxdddolllllllloooooooooddoooodooodddddddddddddddddddddddoooolllllccccccccccccccc::::;;;;;;;;;,,,,''',,,'''''''''''''',,,,;:ccllloollc:;;,,,,,,,,,,,,''',,,;::cccclloooooooooolloolllllllcc::::;;;;:
,,,,,,,;;;;::::::::;;;;;;;;::cccccccc::;;,,,,,;;;::cclloooddddddoooolllcc::::::::::::cldkkkOKWWNNXXKK0OOkxdddoolllllllllooooooooooooddddddddddddddddddddddddddddddoooolllllccccccccccccc::::::;;;;;;;;;,,,,'''',;:::::;,''''',,,,,;::cclllllcc::;;,,,,,,,,,,,,,,,,,;::ccccclllllloollllloooolllllcc::;;;;;;;
,,',,,;;;;:::::::::::;;;;::cclloooooolcc:;;;;;:::cclllooddddddddddoolllcc::::;;;::::cldkkxddk0XXXXKK0OOkxxdddolllllllllloooooooooooooddddddddddddddddddddddddddddddooollllllcccccccccccc::::::;;;;;;;;;,,,,''''''''',:ooc,',,,,,,,;;:ccllllccc::;;,,,,,,,,,,,,,,,,;;:ccccccccccccccclllllooooooollc:::;,,,,;
,,,,,,;;;::::ccccc:::;;;:::clodddddddoolcc:::cccllllooooddddddddddoolllccc::;;;;;::ldkkkxddooodk0KK0Okkxxdddooollllllllooooooooooooooooodddddddddddddddddddddddddddoooolllllccccccccccccc:::::;;;;;;;;;,,,,,'''''''...';cc;,,,,,,,;;::ccccccc::;;,,,,,,,,,,,,,,,,,,;::ccccccccc::cccccllooodddooolcc::;,,,,,
',,,,,;;;:::cccccc:::;;;::cloddxxxxxddoollcclllloooooooooooooooddooollccc::;;;clodkOOkkxxdoolllloxkkkkxxddddoolllllllllooooooooooooooooooodddddddddddddddddddddddddoooollllccccccccccccccc:::::;;;;;;;;;,,,,,''''''......;:;;;;;;;;;:::ccc::::;;,,,,,,,,,,,,,,,,;;;;;::::::cc::::cccclloooodddooolcc:;,,''',
'',,,,,;;:::cccccc:::;;;::cloodxxxxxxddooollloooooooooooooooooooooolllccc:;;:ok0KK0OOkkxddoollcccclodxxddddooolllllllllloooooooooooooooooooddddddddddddddddddddddddoooolllllccccccccccccc::::::;;;;;;;;;,,,,,,'''''.......,:c::::::;;:::::::::;;;,,'''''',,,,,,;;;;;::::::::::::cccccllooooooooollc::;,,''''
'',,,,,;;:::::::c:::::;;;:ccloodxxxxxddoooooooodddddooooooooooooooolllcc:ccoxO00000Okkkxdoooolcc::::cloddooollllllllllllloooooooooooooooooooddddddddddddddddddddddooooolllllccccccccccccc::::::;;;;;;;;;,,,,,,''''.........';lolc:::::::::::::;;;,,''''''',,,,;;;;;::::::::;::::ccccclllloooooollcc::;;,,'''
'',,,,;;;::::::::::::;;;;;::clloddxxdddooooooodddddddoooolloooooolllllloxkOO000OOkkkOOkxxddoollccc::;;::loolccccccllllllllloooooooooooooooodddddddddddddddddddddddooooolllllcccccccccccc:::::::;;;;;;;;;;,,,,,,''............':oxxo::::::::::;;;,,,''''''',,,;;;;;;;;;;;;;;;;;:::cccclllllllllllcc:::;;;,,,,
,,,,,;;;;;;:::::::::;;;,,,;;:cclooddoooooooooodddddddoooolloooooooodxkO00000000OOOkkxkkkxkxxdollllc::;;;;;cllllc:cccllllllllooooooooooooooooddddddddddddddddddddddoooooolllccccccccccccc::::::;;;;;;;;;;;;,,,,''................'cxko:;;::::::;;,,,''''''',,;;;;;;;;;;;;;;;;;;;:::ccccllllccccccc::::;;;;,,,
,,,,,;;;;;;;;::::::;;;;;,,,,;::cllooooooooooooddddddoooollooooddxxkOKK0000000OOOOkkkkxddxxxxxdooollcc:::;;;;:cllllcccccllllllllllooooooooooooooooooooooooodddddddooooooolllcccccccccccccc::::;;;;;;;;;;;;;,,'.....................'cxkxdlc::::::;;,,,,,,,,,,,;;;;;;;;;;,,,,;;;;;::::cccccllcccc::::::::;;;,,
,,,,;;;;;;;;;;:::::::;;;;,,,,;::ccllllllllloooodddddooooooddxkOOO0000000000O00OOOkkkkkkxdddxxxdoodoolcc::::;;;;;::ccccc::cccllllllllooooooooooooooooooooooooooooooooooolllccccccccccccc::::::;;;;;;;;,,,,''.........................'cx00Oxdocc:::;;;;;;,,,;;,,,,,,,,,,,,,,,;;;;::::::ccccccccc:::::::::;;,,
;;;;;;;;;;;;;;;;;:::::::;;;;;;;::cccllllllllooodddddoodxkOOOOOO00000000OOOOkkOOOOOkkkOOOkxdoodxxxxddoolllccc::::;;;;;:cc:;,;::cccclllllllllooolllllloooooooooooooooooolllccccccccccccc::::::;;;;;,,,,''...............................'cx0000Okdocccc:::::;;;;;,,,,,',,,,,,,,,;;;;::::ccccccccccc:::::;;;;,,
::::;;;;;;;;,,,;;::::cc:::::::::::cccccccclllooooodxkO0OOkkOO0KK000000OOOOOkkkOOOOOOO0OOOOkkxdddxxxdddoooolllccccc::;;;;;;'..'',,;;::ccccllllllllclllllllllllooooooollllccccccccccc::::::::;;;,,,''.....................................'cxO000OOkxolccccc::::;;,,,''',,,,,,;,,,;;;;::ccccccccccc::::;;;;,,,
::::::;;;,,,,,,;;::cccccc::::::::::::ccccccllloodxk000OkkO00KK000000OOOOOOO0OOOOOOOOOOOOkkkkkkkxddddxddxxddoollllcccc:::;;,'........',,;;:::cccccccccccccccclllllllllllccc::::::::::::::;;;;,,''..........................................':dO00000Okxdollccc::;;;,,,,,,,,,;;,,,,,,,;;::ccllllccc::::;;,,,,,
cccc::;;;,,,,,,;::cccllcccc::::::;:::::cccclodxkO0OkkkkO00KKK00000000OkkkkkOOOOOOOOOOOOOOOkkkOOOkkxdooodxxxxdlllllllllccc::;,.............'',;;;;;;;;;;;:;::::::ccccccc:::;;;;;;;;;;;;,,,''..................................................:dO000000OOxdollccc::;;;;;;;;;;;,,,,,,,,,;;::cccccc:::::;;,,,,,
ccc:::;;,,,,,,;::ccclllllcc::::;;;:::::cccoxO000OkxkOO0KKK00000OOOOOOOOOOkkkOOOOOOOOOkkkOOOkkkkkOOkkxxddolodddddooooolllllllc;'...................'''''''',,,,,;;;;;;;;;,,,,,'''''''..........................................................,lxO00OOOOOOOkdolccccc::::::;;;,,,,,,,,,,,;;::ccc::::::;;,,,,,
c::::;;;,,,,;;:::cccccllccc:::;;;::::cldxk000OkkkkkO00KKKK0000OOkkOOOkkkOOkOO00OOOOkkkkkOkkkkkkkkOOkkkkkxdoolllooodddoooooooool:'................................''''...........................................................................,lxOOOOOkOOO0Okxoolcccccc:::;;;,,,,,,,,,;;;::::::::::;;;,,,'
::;;;;;;;;;;::::cccccccc::::;;;;;:coxkO000OOOkkkOO00000000OOkkkkkkkkkkkkkkkkOOOOOOOkkkkkOOkkkkkkkkOkkkkkxxxkxdolccccllooddddoodo:.................................................................................................................'cdOOOOOkkkOOOOOkxdolcccc::;;;,,,,,,,,;;;:::::::::;;;,,,''
:;;;;;;;::::::ccccccccc:::;;;::loxOO00000OkkOOOO00KKKK00OOOkkkkxxkkkkxxkkkkkkOOOOOOkkkkOOOOOkkkkkkkkkkkkkkkkkkkkxdolc::cllooooooc,...................................................................................................................:okOOOOkkkkkkOO00Okxol:;;;;,,,,,,,,,;;;;::::::;;;;,,,''
:;;;;;:::cc::cccccccc:::;:cldxkO000000OOOkkkO000000000OOOOkkkkkkkkkkkxxxxkkkkOOkOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxdddoolc:;;::clc;.....................................................................................................................:oxkkkkkkkkkkkkO000Oxol:,'','',,,,,;;;::::::;;;,,,'''
:::::cccccccccc:::::::cloxO0000000000OOkkkkO00000000OOOOkkkkkxxkxkkkxddxxxkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddoolc::;;,,'......................................................................................................................:oxkkkOOkkkkkkxxkO000Oxoc;,'',,,,,;;;;;;;;;;,,,,,''
:::ccccccccccc:::::coxk0000000000OOOOOOOOO0000OO00OOkkxxxddddxxxxxxxxxdddxxxkkkkkkkOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxddoooollc:;'.........................................................................................................................':odxxkkkxxxxxddxkkOO000Oxoc;,,,,,,,,;;;;,,,,,''''
:::ccllcccccccccoxO0000000OOOOOOOOkkkkOOOOO000OOOOOkxdlc:::cclodddxxddddddxxxkkkkxxxxkkkkkOkkkkkkkkkkkkkkxxxxxxddddddddooollcc:;;,'.........................................................................................................................,codxxxxxxxxddddxxkOO00000Oxoc;,'',,,,,,,,,'''''
::cccccccc:cldkO0K00OOOOOkkkxxxxxddddxxxkkkOOOkxxxdooc:;,''',;cllodxxxddxxkkkkkxxddooooddddxxxxxxxxddddddooooollllllcccccc:::;;;;;,'..........................................................................................................................;loddddxxddddddodxkkkkkOOO00Oxol:,'',,,,,'''''
ccccccc:cloxO000000OOOkkkxxdddooooooloodxxxddxxdooolc:;,''''''',;:cloodxkkxxxxdooollccclooooolllllllcccc::::::;:::;;;;;;;;;;;,,,,,''...........................................................................................................................':lloododdddoooodddddxxxxkkkkOOkxoc;,,,,'''''
::::::coxO0K00000OOOkkxxxxdddodoollllooodddoodddolc:;'''...'''''',;::cloddlllcc::ccccccccc::::;;;;;;;,,,,'',,,'',,,,,,;;,,,,,,;;;,,,''..........................................................................................................................';cccllloodooooooooooooooddddxkkkkxl:,,,,,''
;;:cldk0000000OOOOkkkxxdddddooodoooooooooddoooollc:,'........',,;;;,,,,;::ccccc:;;::::ccc:::;;;;,,,,'''.....''.''',,,,,,,,,,,,,,,,,,,'............................................................................................................................,:cllllllllllllllllcccllloddddxxkkxo:,,,,,
:ldkO000000OOOOOkkkxxdddddodddddoooooooooollooolllc;'........',;::;,'''.''',;;,,,,,,;;::cc::;;;;;,'''''.........'''',,,,,,,;;;;,,,,,,''............................................................................................................................':clllllllllloooollllloollooooddxxkkdc,,,
dOKKK00000OOOOkkxddddddddddddddoooooooolllcccccllc:;,'........';::;,'.......''..'',,;;::::c:;;;;:;,''''''......''''',;;,,;;;;;;;,,,,,'''............................................................................................................................':llcllllllloooollllloolllllloodxxkOOd:'



-
{{handshake_scripts | safe}} - - - + {{ ascii_art | safe }} \ No newline at end of file diff --git a/templates/assets/css/404.min.css b/templates/assets/css/404.min.css new file mode 100644 index 0000000..8c5bcde --- /dev/null +++ b/templates/assets/css/404.min.css @@ -0,0 +1 @@ +*{padding:0;margin:0;box-sizing:border-box}body{background:#282828;overflow-y:auto}p{font-family:Bevan,cursive;font-size:130px;margin:10vh 0 0;text-align:center;overflow-y:auto;letter-spacing:5px;color:#000;text-shadow:2px 2px 3px rgba(255,255,255,.1);-webkit-background-clip:text;-moz-background-clip:text;background-clip:text}p span{font-size:1.2em}code{color:#bdbdbd;text-align:left;display:block;overflow-y:auto;font-size:16px;margin:0 30px 25px}code span{color:#f0c674}code i{color:#b5bd68}code em{color:#b294bb;font-style:unset}code b{color:#81a2be;font-weight:500;overflow-y:auto}a{color:#8abeb7;font-family:monospace;font-size:20px;text-decoration:underline;overflow-y:auto;margin-top:10px;display:inline-block}@media screen and (max-width:880px){p{font-size:14vw;overflow-y:auto}}.tab-space{margin-left:2em}.message{text-align:center;margin:auto}.message span{border-radius:5px;padding:10px;background:#000} \ No newline at end of file diff --git a/templates/assets/img/profile2-fg.webp b/templates/assets/img/profile2-fg.webp new file mode 100644 index 0000000000000000000000000000000000000000..100263a313758c93f5af683b0a1df32409c4867f GIT binary patch literal 16378 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 literal 0 HcmV?d00001 diff --git a/templates/assets/js/404.min.js b/templates/assets/js/404.min.js new file mode 100644 index 0000000..e8a4b73 --- /dev/null +++ b/templates/assets/js/404.min.js @@ -0,0 +1 @@ +const trigger="s",secret="/supersecretpath",home="/";var isSecret=!1;function error_check(){return function(){isSecret?(alert("You found the secret path"),window.location=secret):(alert("You're lost! I'll send you back home"),window.location="/")}}function type(e,t){var n=document.getElementsByTagName("code")[e].innerHTML.toString(),o=0;document.getElementsByTagName("code")[e].innerHTML="",setTimeout((function(){var t=setInterval((function(){o++,document.getElementsByTagName("code")[e].innerHTML=n.slice(0,o)+"|",o==n.length&&(clearInterval(t),document.getElementsByTagName("code")[e].innerHTML=n)}),10)}),t)}setTimeout(error_check(),7e3),document.addEventListener("keydown",(function(e){"s"==e.key&&(isSecret=!0)})),type(0,0),type(1,600),type(2,1300); \ No newline at end of file diff --git a/templates/assets/js/pfp.min.js b/templates/assets/js/pfp.min.js new file mode 100644 index 0000000..ebb055e --- /dev/null +++ b/templates/assets/js/pfp.min.js @@ -0,0 +1 @@ +let clickCount=0;function changeImages(){clickCount++,5===clickCount&&(document.querySelector(".profile.background").src="assets/img/profile2.webp",document.querySelector(".profile.foreground").src="assets/img/profile2-fg.webp")}document.querySelector(".profile.background").addEventListener("click",changeImages); \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 49920c5..0ca97b6 100644 --- a/templates/index.html +++ b/templates/index.html @@ -103,72 +103,26 @@ Check them out here!

My Websites

-
-
-
-
-

Nathan 3D Printing

-

Offering 3D Printing and CAD modelling services to the Canberra region

-
-
-
-
-
-
-

HNSAU Registry

-

An easy to use DNS provider and domain reselling platform

-
-
-
-
-
-
-

HNSAU

-

The group for Handshake enthusiasts in Australia

-
-
-
-
-
-
-

HNSHosting

-

Simple Wordpress hosting for Handshake domains with builtin SSL using DANE

-
-
-
-
-
-
-

FireWallet

-

An opensource Handshake wallet that is Fire!

-
-
-
-
-
-
-

ShakeCities

-

A single page website creator where each user's page on their free HNS domain

-
-
-
-
-
-
-

Git Server

-

Selfhosted Git server to host my repos with custom hosted CI/CD 

-
-
-
-
-
-
-

LINKR/

-

A free link shortener with a Handshake TLD and using DNS for authentication

-
-
+
+ +{% for site in sites %} +
+ +
+
+

{{ site.name }}

+

{{ site.description }}

+
+ {% endfor %}
@@ -286,6 +240,7 @@ Check them out here! + diff --git a/templates/now/24_02_18.html b/templates/now/24_02_18.html index 58bbc9c..1adf6b5 100644 --- a/templates/now/24_02_18.html +++ b/templates/now/24_02_18.html @@ -133,13 +133,13 @@ Find out what I've been up to in the last week">
- - - diff --git a/templates/now/24_02_25.html b/templates/now/24_02_25.html index 45bc885..cb356f9 100644 --- a/templates/now/24_02_25.html +++ b/templates/now/24_02_25.html @@ -100,13 +100,13 @@ Find out what I've been up to in the last week"> - - - diff --git a/templates/now/24_04_14.html b/templates/now/24_04_14.html new file mode 100644 index 0000000..c1acc4a --- /dev/null +++ b/templates/now/24_04_14.html @@ -0,0 +1,136 @@ + + + + + + + What's up at the moment | Nathan.Woodburn/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{handshake_scripts | safe}} +
+

Nathan.Woodburn/

+

WHat's Happening Now

+
{{DATE}}
+
+
+

Vietnam Hackathon

+

I've been invited to help judge a hackathon in Vietnam at the Hanoi National University. 

+
+
+
+
+

.G/ Updates

+

I've helped Andrew Lee setup the .g/ TLD. This involves a registry using Varo in addition to a custom blog. The blog includes sections that are restricted to be only accessible to people with a Handshake resolver. Another section uses the TLD restricted proxy to only allow .g/ SLD holders access to some blog articles.

Visit Alee.g/

+
+
+
+
+

Server problems

+

My main server (this is a server I own and host in a data centre) stopped responding late last week. After weeks of postage and delays, I've replaced both the raid controller and the motherboard. After tons of troubleshooting the server is now back up again.

+
+
+
+
+

New HNSDoH Nodes

+

I've just added 3 new DNS nodes to allow more reliability and faster speed for more people. These nodes were setup in partnership with EZ Domains.
These nodes are located in Canada, Netherlands & Singapore
HNSDoH

+
+
+
+
+

TLD Restricted Proxy 

+

I've just released a proxy app that allows you to set paths to be restricted to someone who holds a SLD on your TLD.
Git Repo

+
+
+
+
+

HandyCon

+

I presented a FireWallet demo at HandyCon. Listen in or watch the recording to see how it can speed up your wallet management.
Watch Recording

+
+
+
+
+

Other Updates

+

I've recorded some tutorials to my YouTube channel. Stuff like HNS Links, Site Manager and others.

+
+
+
+
+
+
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/templates/now/old.html b/templates/now/old.html index 11d37e4..64b7b28 100644 --- a/templates/now/old.html +++ b/templates/now/old.html @@ -76,13 +76,13 @@ Find out what I've been up to in the last week"> - - - diff --git a/templates/now/template.html b/templates/now/template.html index 3bbe392..5f767d2 100644 --- a/templates/now/template.html +++ b/templates/now/template.html @@ -77,13 +77,13 @@ Find out what I've been up to in the last week"> - - - diff --git a/templates/resume.html b/templates/resume.html index ea8b0ff..7a73ef7 100644 --- a/templates/resume.html +++ b/templates/resume.html @@ -117,7 +117,7 @@

Server Administration • Since 2023

-

I own and manage a dedicated server hosted in a local data center. Utilizing a Proxmox hypervisor, I efficiently manage virtual machines on the server. To increase security measures, I have implemented three firewalled routers to govern three distinct public IPv4 addresses. Each IP is assigned to a separate virtual network, thereby enhancing the overall security infrastructure.

+

I own and manage a dedicated server hosted in a local data center. Utilizing a Proxmox hypervisor, I efficiently manage virtual machines on the server. To increase security, I am running three separate VLANs with separate firewalls.


diff --git a/templates/sitemap.xml b/templates/sitemap.xml index d24288d..1d3785e 100644 --- a/templates/sitemap.xml +++ b/templates/sitemap.xml @@ -16,10 +16,10 @@ https://nathan.woodburn.au/now/template - https://nathan.woodburn.au/about + https://nathan.woodburn.au/404 - https://nathan.woodburn.au/ascii + https://nathan.woodburn.au/about https://nathan.woodburn.au/donate