ETH Price: $3,454.21 (-1.10%)
Gas: 11 Gwei

Token

CUM in me Senpai⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⠤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀... (CUM)
 

Overview

Max Total Supply

420,699,966,699 CUM

Holders

126

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CUM

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

/// SPDX-License-Identifier: Unlicensed

/*
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣼⣷⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⢀⣠⠶⠟⠿⠿⠿⢿⢿⣶⣶⣶⣶⣶
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡧⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡿⠓⠀⠀⠀⠠⠿⠖⠒⠻⣯⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⢠⣺⣿⣿⡇⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡞⡁⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⢸⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡿⠀⣿⠟⠃⠀⣧⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡰⠃⠀⡀⠀⠀⡀⣠⠀⠀⣶⣵⣷⣿⣿⣿
⠀⠀⠀⠀⢠⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⡇⢸⡏⢻⣤⢀⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠠⣾⡿⠧⠦⠄⠠⢀⣤⣿⣿⣿⣿⠏⠈⠙⠛⢻⣿
⠀⠀⠀⠀⣼⣣⠀⠀⠀⠀⠀⠀⠀⢀⣾⢿⠀⢸⠀⠐⢿⣿⣿⣿⣛⣛⣻⣗⣖⣒⣲⣶⣶⣶⣶⣾⣿⡧⠤⣤⣤⣤⣤⣄⣀⣀⣀⣘⣧⣠⣶⣶⣦⣽⣿⡿⢿⣻⣏⠀⠀⠀⠀⢸⣿
⠀⠀⠀⢀⣿⠙⢷⣄⠀⠀⠀⣠⡶⠋⠁⡏⢀⡟⠀⠀⠀⠻⢿⣿⢀⣀⣠⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠛⠛⠛⠓⠒⠶⠖⣤⡿⠿⣟⢿⣇⠉⣿⠟⠿⢤⣀⣈⠃⠀⠀⠠⣤⢿⣿
⠀⠀⠀⣸⠟⠂⢤⠈⠛⠒⠛⠁⠀⠀⣰⠇⣼⣅⡀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⣠⠾⠋⢀⣠⣿⡷⠟⢾⡏⠀⠀⠀⠈⠉⠀⠀⣤⣄⣠⣾⣿
⠀⠀⢠⠟⠀⠀⠀⠀⠀⠀⢠⡄⠀⠘⣿⠀⡏⣿⣷⡂⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⣠⡞⠁⠀⣰⣾⢟⠩⠤⠤⢼⣇⠀⠀⠀⠀⠀⠀⠰⠉⢠⣿⣿⡿
⠀⢠⠟⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⢸⠀⣷⣿⣿⣿⣦⣀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⠃⢀⣾⢿⠋⠀⠀⠀⠀⠀⠀⠙⠲⢤⣾⣿⠟⢀⣠⣿⣁⣠⣤
⢀⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⣼⡆⠻⣿⣿⣿⣿⡿⠗⠓⠒⠒⠲⠽⣿⣿⣿⠿⢿⣿⣿⣿⣿⣿⣿⠟⢹⡇⡼⣿⡟⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠒⠿⢿⣿⣯⣠⡇
⠈⠳⣆⡀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⢹⡇⠸⢽⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⣾⣿⣿⣿⣿⣿⡿⠋⠘⢸⣧⡇⣿⠀⠣⠀⠀⠀⠖⠉⠓⠶⢤⣄⠀⠀⠀⠀⠀⠀⠈⠙⠻⠇
⠀⠀⠈⠙⢦⡀⠀⠀⠀⠀⠀⡸⠀⠀⠘⡇⢀⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⢿⠿⠋⣠⠞⠀⠈⢿⣇⠙⠲⠀⠀⣠⠖⠋⠉⠙⢶⠤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠔⠁⠀⠀⠀⢀⡬⠔⠚⠉⠉⠀⠀⠀⠀⠀⢤⡀⠀⠀⠀⠀⠀⠀⢀⣠⠞⠁⠀⠀⠀⠀⠙⠃⠀⣴⠞⠁⠀⠀⠀⠀⠈⠀⢸⣿⣿⣶⣦⣤⣤⣀⣀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⢀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⡀⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠰⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⠐⠄⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⢰⢋⣠⠴⢚⣉⡿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡴⠚⠱⡄⠀⠀⢨⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⠀⠀⠈⠓⢤⣠⣄⡀⠀⠀⠈⢱⠞⠉⠀⠰⢏⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠏⠀⠀⠀⡆⠀⠠⣯⠉⠉⠉⠉⠉⠙⠛⠛⠛⠛⠛⠛
⠀⠀⠀⠀⠀⠈⣕⡯⠳⠦⢄⡀⠀⠀⠀⠀⢀⣀⣉⣉⣉⣉⡽⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣉⠉⠀⣤⡤⠚⠁⠀⢀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠙⢦⣄⠀⠙⠲⡄⠀⠀⠀⣄⣀⣉⣥⣤⣾⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠴⠋⢧⠀⠀⠀⠀⠀⢀⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢧⣸⡍⠳⣄⠀⠠⣄⣉⣁⣉⡴⠋⠀⠀⢀⣠⡴⠊⠀⠀⠀⠀⢀⣠⠴⢦⡖⠒⠒⠋⠁⠀⠀⠈⠳⢤⣄⣤⣼⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢯⢧⠀⠀⠉⠓⠒⠦⠞⠋⠀⠀⠀⠀⠉⠀⢀⣀⣀⡤⠴⠚⠉⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠩⢭⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡄⠀⠀⠀⠀⠀⠀⠀⠈⠸⠶⠒⠒⠋⢹⠁⠀⠀⠀⠀⠀⠀⠀⠀⠻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡅⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣦⣄⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀



⡱⢈⢆⠳⢌⡚⢬⡑⣌⣢⠟⠉⠁⠀⢢⡀⠀⠀⠀⠀⣀⡴⢺⣍⣿⣿⠏⠀⠀⠀⠈⣿⣯⢿⣻⢿⡏⣜⢺⢿⠀⣿⡄⠀⣸⠀⠀⠀⠉⠓⢮⡐⠄⠰⡄⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿
⡔⡉⠦⣉⠆⡩⢆⠒⡤⠀⠀⠀⡀⠀⠀⠈⠛⠭⣭⣙⣤⡣⠗⢾⣾⡋⠀⠀⠀⠀⠀⢸⣿⣏⣾⡿⡘⢦⡉⠆⡐⣼⡇⢀⠆⡀⠀⠀⣐⣁⣀⣑⡬⠦⠼⠮⠦⣈⣿⣿⣿⣿⣿⣿⣿⡿⣟⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⢦⠉⢆⢅⢪⠑⣌⠿⣅⠀⢀⠜⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣊⣀⠈⡱⠤⠤⠤⠄⢈⣿⣾⣿⣵⣽⣯⣴⣵⣶⣿⣷⡿⠞⢋⠉⡉⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⠘⡌⠢⢌⠢⢍⡰⢣⡿⣠⠋⠀⠀⡀⠔⠀⢀⡠⠤⠒⠒⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠒⠚⢿⣛⡩⠱⢋⠡⠘⡀⠂⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿
⠀⠱⡁⠎⠰⠈⡔⢱⡞⠁⠀⡠⠊⣀⠤⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢄⡀⠉⠑⣆⠡⠂⠄⠁⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⠀⠐⣷⠈⢱⠀⡌⢹⠀⣤⡟⣶⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⠀⢸⡄⠁⠂⢡⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⡔⣦⣿⣿⣿⣿
⠀⢀⢻⣧⡂⠱⢈⡟⣴⡿⠋⠁⠠⢀⠂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⠸⡆⠱⠈⠄⢂⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣭⣿⣿⣿⣿⣿⣿
⠀⠘⡆⢻⡝⣧⣼⡿⠋⠄⡈⠄⠡⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢧⡃⢍⡐⢀⠂⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣟⣽⣿⣿⣿
⠀⢠⢎⣰⣹⣷⠋⠄⡁⢂⠐⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⣆⡘⠤⣈⠐⡀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿
⣶⣾⣿⣿⡟⢡⠘⠠⠐⢀⠠⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡍⡖⢤⠒⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠺⣿⣿⣿⣿
⣿⣿⣿⡟⢨⠆⣈⠁⠂⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣝⢦⡙⠤⢁⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿
⣿⣿⡟⢌⠲⡐⠠⢈⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣮⣑⠃⢆⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿
⣿⣿⠜⣨⠱⣀⠃⠄⡀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡷⣯⢘⠢⡁⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
⣿⣿⢍⢆⡓⠄⣊⠐⠠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣟⡳⢏⡒⠡⠌⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
⣿⣿⡘⢦⡘⠡⢄⢈⠐⠠⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡇⠤⢿⡢⡙⢄⠃⢄⠈⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
⣿⣿⡘⢦⢡⠃⢌⠠⢈⠐⡀⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⢀⢆⠀⠏⢷⡈⠌⠤⠈⠄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
⣿⣿⡘⢆⠣⢎⠠⠂⠄⢂⠠⠁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡇⢸⡴⡇⢸⠈⡗⡌⠄⢃⡈⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿
⣿⣿⡑⢎⡒⡌⢢⠐⠠⢈⠀⢂⠠⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⡇⢸⣇⠇⠈⣦⡇⠥⠐⡈⠡⢀⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⣸⣿⣿⣿
⣿⣿⡜⢥⠚⡤⢃⠜⠠⠀⡈⠄⠠⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⠃⢸⣼⣺⠀⣿⠄⠁⠂⠄⡁⢂⠐⠠⢁⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢣⣿⣿⣿⣿
⣿⣿⣎⢣⠝⡤⢃⠜⡠⠀⠄⠂⡁⠄⠁⠠⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡞⢀⡏⣿⡏⠇⢸⠀⠀⠀⠀⠀⠂⠌⡐⢀⠂⠄⢁⠠⠀⠀⠀⠀⠀⠀⢀⢎⣾⣿⣿⣿⣿
⣿⣿⣧⢫⡜⡰⣉⠒⠤⠁⠂⠁⡄⢈⠐⡀⠁⡀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⣿⣠⡟⠀⣿⣻⢊⣿⠀⠀⠀⠈⢀⠈⡐⢀⠂⡌⠐⠠⢀⠐⠀⡀⠀⠀⣠⠋⣼⣿⣿⣿⣿⣿
⣿⣿⣿⣧⢚⡱⢌⡱⢊⠡⡈⠔⡀⠂⠄⠠⢁⠀⠂⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠃⢻⠙⢷⡀⣟⡗⣹⢭⣳⡄⠀⠄⡀⠠⠐⢂⠡⡐⣉⠰⢀⠂⡁⢀⢂⡼⠁⣸⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⡯⣜⠲⡌⢆⡱⢈⠔⡠⠑⣈⠐⠠⠐⡈⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠜⡄⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⢸⡆⢸⣗⡏⣴⢏⡖⢦⡙⣆⠰⢠⠡⡘⢤⠣⡔⢄⠣⠌⡐⢠⡖⠋⠀⣴⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣬⢓⡜⢢⠆⢣⠘⡄⠡⠄⠌⠠⠁⠄⡐⠀⡁⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⢀⠞⠁⠀⠀⢸⣷⣿⣿⣿⢏⡞⠼⣑⠮⡰⢍⡆⣣⠙⢦⠱⡘⠌⢆⢱⠼⠃⣀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⡜⣬⢃⠎⣅⠣⢌⠱⡈⠌⢡⠈⡐⢀⠂⠄⠐⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣳⣿⡟⢮⡜⣣⢇⣚⠱⢎⠴⢣⡙⢆⠣⣉⠘⡄⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣷⢆⡏⡼⢠⢋⡜⢢⠑⡌⢄⠂⠅⢂⠐⢈⠐⠈⢀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⢻⡯⣜⣳⢚⣥⢚⡬⣙⢎⡱⣃⠞⡈⢆⣤⣿⣿⣿⣿⡿⢫⣾⡿⢯⣽⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣷⣚⡴⣃⠎⡔⢣⡑⢢⠌⢒⡈⠤⠈⠄⡈⠐⡀⠂⠄⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣾⡿⣝⢮⣓⢯⢲⡍⢶⣩⠚⣴⣡⣾⣾⣿⣿⣿⡿⠟⢛⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⡍⡞⣌⢣⠌⡥⠚⠤⡐⢂⡉⠰⠈⡔⠠⢁⠂⠌⡀⠂⠄⠀⠀⠀⢀⠄⠀⠀⠈⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣾⣿⣾⣾⣷⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⣰⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣧⣻⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣜⠧⣜⡠⡛⢤⠣⢄⡘⢃⠤⡀⢇⠠⡘⠠⢀⠃⢠⠀⠄⠀⠘⢀⣠⣼⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠃⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣼⣿⣿⣿⣧⣿
⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣶⣷⣽⣆⣙⢦⡘⡌⢦⡑⣌⠒⡥⢓⡌⣎⣡⣮⣶⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣼⣿⣿⣿⣿⣿⣿⡿⠟⠩⠄⢢⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⢆⣯⢛⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⡩⠁⡔⠈⠆⢡⡟⠀⢀⣾⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⣖⢏⡞⡱⢏⡟⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⡫⠑⡌⢢⠁⡃⢄⠃⠤⢉⠂⢹⠀⣠⣿⣿⣿⢿⣿⠿⠾⣿⣿⢳⣿⣿⢟⣿⣿⣿⣿⣟
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡜⡮⢜⡱⢣⠜⡑⢆⠢⡅⢫⠍⣋⢛⡛⣛⢛⡛⢛⠩⢋⠉⠉⠉⠉⠉⠉⠉⠙⠊⠓⢺⡿⢋⠔⡃⠔⡡⠒⠠⠡⠌⡠⢊⠰⠈⠀⠁⡰⣿⣿⣿⡿⡿⣿⣿⡯⣝⣞⣬⣿⣿⡸⣿⣷⡸⣯⠿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡱⣋⠴⣃⢎⠱⢊⡱⢈⠖⡘⢄⠣⡐⢂⠆⡘⢀⠂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡿⢃⠅⠊⢄⠣⠠⢁⠃⡁⠆⡁⠆⢁⠂⢀⣴⣿⡿⣩⡵⣿⣏⣭⣾⢳⣾⢻⣷⣾⣻⣷⣿⣿⣿⣯⣵


⠀⠀⠀⣀⡴⢉⣿⠧⠿⢭⣒⣦⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⣠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠁⠀⠘⣧⢴⣾⠁⢋⣴⣵⡶⢿⣶⡖⡷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠤⢤⡀⠀⠀⠘⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠂⢴⣞⣡⢿⠿⢩⢽⢿⢚⣽⣶⣼⡟⢇⠹⣄⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡴⡾⠗⠂⠈⠻⣤⠘⠀⠈⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢦⣀⡀⢹⠸⡀⢸⡼⣤⠻⢷⣧⣼⡄⢸⡄⠈⡇⠀⠀⠀⠀⠀⠀⢰⡿⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠟⠃⠀⠀⠀⠀⢻⠳⡄⡃⢹⠀⠀⠀⠀⠙⢦⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠈⠉⢻⡄⢹⣾⣓⣿⣗⣞⣈⡽⢳⢯⢇⣼⣃⡀⠀⠀⢀⣠⣴⡿⣸⣻⠀⡀⠀⠀⡀⠀⡦⢀⠀⢠⠀⠀⠀⠀⢀⢴⡿⠃⠀⠀⠀⠀⠀⠀⠈⣿⢯⢹⣸⡆⠀⠀⠀⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠘⣏⠺⣜⠒⠻⣷⠾⠋⢁⣼⣿⠿⠧⠶⠖⠒⠋⣩⣾⢯⣿⣿⡇⢸⠀⢠⣶⠇⣄⢀⣴⣤⠉⢀⡀⠀⠀⢡⡟⠁⠀⠀⠀⠀⠀⠀⣀⠀⣿⣿⣇⣧⣿⣄⠀⠀⠀⠀⠀⢧⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠈⠳⣤⡙⠛⠿⣭⣽⣿⡿⠿⠆⠀⠀⠀⠀⠚⠋⠁⣸⡿⣿⣿⣾⠀⣿⡏⣸⡿⢸⡿⣿⠇⣼⣧⢀⢀⡼⠁⠀⠀⠀⠀⠀⣠⠴⠏⢀⡏⢿⣿⣾⣸⣌⠃⠀⠀⠀⠀⢸⣶⣷⣾⣿⣿⣷⣦⠢⠄⠀⠀⠀⠀⠀
⡀⠀⠀⠀⠀⠈⠛⠛⠒⠒⠒⠛⠉⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣷⣿⠛⠻⣴⢿⣷⣿⣧⣿⣷⣿⣠⣿⣇⡞⣾⡟⠀⠀⠀⠀⢀⡞⣡⣤⣦⠀⠀⠈⣿⣿⣏⣿⣦⣀⠀⢀⣤⣼⣿⠙⣿⣿⣿⣿⣿⣾⣦⡶⠃⠀⠀⠀
⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⣀⣀⠀⢀⣸⣿⣿⣿⣿⣿⠟⡯⢀⡄⣯⣾⣟⣽⣿⣿⣿⣿⣿⢻⣿⣽⣽⠇⠀⠀⠀⠀⠀⣰⣿⢟⡅⠀⠀⠀⠈⠻⣿⣿⢿⠈⣰⣿⣧⣊⣻⣧⣬⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀
⡇⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢠⣧⣾⡇⡿⠛⣿⢿⣿⡟⣿⡿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠸⠟⠛⠁⠀⠀⠀⠀⠀⠀⣰⣿⣸⡦⠖⠛⠻⣿⡿⠿⠉⠋⣿⣽⣿⣿⡎⠀⠀⠀⠀⠀
⣤⣀⣀⡀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⣼⣿⣿⣴⡃⣰⣿⣿⣿⣾⣿⣧⣿⣛⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣁⡀⠀⢀⠆⢻⣷⡄⠀⠀⢻⣿⣿⣿⣧⠀⠀⠀⠀⠀
⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣠⡾⣵⣿⣿⣿⣿⣿⣿⣿⣯⣴⠟⣿⣼⡷⠯⣧⠈⠻⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣾⣿⡇⢹⡇⠀⠈⠃⣿⣿⡿⠀⠀⠀⣿⣿⣿⣿⡆⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣵⣞⣯⠞⣿⠟⣿⣿⣿⣿⢟⣵⣿⣿⣿⣿⣻⣯⣳⣼⣦⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⣸⣿⣿⠶⣿⣁⣀⣠⣾⣿⡍⠀⠀⢀⣴⣿⣿⣿⣿⣧⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣷⣬⣙⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⠉⠀⣠⡾⠋⢰⣾⣿⣿⣣⣾⣿⣿⣿⣿⣿⣿⣿⣻⣷⣴⣿⡧⣄⠀⠀⠀⠀⠀⠀⢠⠖⠚⡟⣶⢻⣿⣿⢹⠉⣨⣿⡟⠿⢿⣶⣶⣿⣿⣿⣿⠿⣿⣿⡀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣃⠀⣠⣾⠟⠋⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣳⣿⣧⣯⣿⣷⣌⣗⠲⣤⣤⣀⠤⢤⣀⣀⣼⣿⣾⣿⣿⣾⣿⣿⣿⣧⡁⠀⣹⠿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢫⡞⣡⡾⠛⠁⢀⡄⣸⣿⡿⣿⡟⣩⣴⣾⠗⠋⠁⠀⠀⠀⠀⠘⠛⠋⠉⣉⣻⠿⢛⡍⢠⢴⢶⣤⣀⡙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⠛⠃⠙⣿⣿⣧⠀⠀
⣿⣿⣿⣿⣿⡿⠋⠉⠙⠻⢿⣿⣿⣿⣿⢿⡞⠉⠀⢀⣴⣫⣾⣫⣽⣾⣿⡿⠿⠯⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠐⠉⠀⣸⡄⣼⣏⣿⣷⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⢻⡏⢹⣧⠀
⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⣠⣿⣿⣿⣫⡏⢠⡴⣲⡿⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⢯⣿⣶⣟⣁⣤⣄⣠⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠈⣿⣧
⡉⠛⠿⣿⣿⣿⣦⣄⣠⣾⣿⣿⣿⣿⡿⣰⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠚⠹⣟⣶⣻⡞⣿⠄⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⢀⣀⣼⣿
⣿⣶⣄⡙⢿⣿⣿⣿⣯⣿⣼⣇⣾⣿⣳⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣻⠷⠋⣶⣶⢶⣶⣦⠀⠉⠙⣿⠿⠿⣿⣿⣿⣿⡇⠀⢸⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⠀⠈⣿⣿⣷⣿⠟⠀⠀⣼⠃⠀⠀⠈⠿⣿⣿⣷⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢷⡏⢿⣿⡇⠀⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡄⠀⠀⠀⠀⠀⢀⡭⢤⣄⠀⠀⠴⣟⣿⠟⠃⠀⠀⣼⣿⣧⠀⠀⠀⠀⠘⣿⣿⢿⣿⣿⣿⣿⡿
⠟⠛⠛⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⢈⣧⠸⣿⡇⠀⠀⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠰⠋⢰⣿⣿⣷⣦⣀⠀⠀⠀⠀⠀⠀⢯⡻⣿⣧⠀⠀⠀⠀⠘⠿⠁⠈⢻⣿⣿⣿
⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⡿⣿⣿⡆⣿⣧⢿⣿⠀⠀⠸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠏⠀⢿⣿⣿⣿⣿⣶⣤⣀⠀⢴⠤⠬⢯⣽⣦⣄⣠⡀⠀⠀⠀⠀⠸⠿⠉⠻
⠀⠀⠀⠀⠀⡞⢿⣿⣿⣿⣿⣿⣿⡇⠈⠿⣿⣿⡄⠀⠀⢷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⣀⠈⠙⠛⠛⠁⠀⠀⢀⣀⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠹⣬⣙⣛⣿⡿⠟⢿⡟⣰⢲⣿⣿⡇⠀⠀⢸⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠏⠸⢦⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣯⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣶⣿⣟⣿⣥⣄⡀⠀
⠀⠀⠀⠀⠀⠀⣿⣿⠟⢁⣠⡶⠾⣻⢁⣾⣿⡟⢹⠀⠀⠈⣿⡄⠀⠀⠀⠀⠀⠀⠀⠭⠡⣃⡀⠸⣄⣼⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠈⠉⠛⠿⣿⣿⣿⣿⣷⣶
⠀⠀⠀⠀⠀⢰⣿⣿⣠⣿⣿⣶⣿⣿⣿⣿⣿⠀⠘⠂⠀⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⠉⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⡏⢿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠉⠁⠈⠉⠉
⡀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⢻⣷⡀⠀⠀⠀⠀⠀⣀⣀⣴⡷⠋⢆⡇⠐⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣻⡟⢟⣿⢾⣿⣿⣿⣿⣿⣿⣦⣄⣀⣀⠀⠀⠀⠀⠀⠀
⣿⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠈⣿⣿⡯⡤⠂⠀⠀⠙⠻⢧⣄⠸⡌⣷⣄⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⡿⣟⣤⡗⣯⣾⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⣄⣀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⠙⠿⠓⠦⣤⡀⢠⣶⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠉⠀⠁⢸⣿⠄⠀⠀⠀⠀⠀⠀⠓⠄⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣷⢸⣇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⢀⣾⣿⣡⣾⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⢀⣠⣤⣤⣤⣤⣀⣀⣀⣀⣼⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠈⣿⣿⣿⣿⣿⣿⠇⠀⣀⣀⣤⣤⣶⣶⣶⣤⣤⣶⣾⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⠉⠙⠋
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠙⣻⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢛⣻⢿⣻⠿⠖⠚⠛⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠉⠀⠀⠀⠀⠈⠉⠛⠷⣶⣄⡀⠀⠉⠉⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⡀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢿⣿⠟⠉⠀⢀⣴⣿⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⡿⠟⠛⠛⠻⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣥⠊⠉⢿⠀⠀⢠⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢿⣦⡀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⢟⡿⣿⣿⡏⠀⠀⢸⣆⣰⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠙⢿⣆⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣧⠏⠀⢹⣼⡇⢠⠀⠈⢿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡤⢤⡴⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣄⣠⣦⠀⠀⠀⠀⠀⠀⠻⣧⡀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⡟⠋⣿⢹⡄⠀⢿⡿⠀⠀⢳⡘⣇⠀⠀⠀⠀⠀⠀⢀⡤⠶⣖⠋⠙⣻⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠈⢧⠀⠀⠀⠀⠀⠀⠘⣷⡀⠀⠀⠀⠀⠀⠀⠀⢘⣿⠿⣿⣿
⣿⣿⣿⣿⣿⠀⠸⣿⡘⡿⠀⢸⡇⠀⠀⠈⣿⣿⣄⠀⠀⠀⣠⡴⠋⠀⠀⢸⣀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠸⣷⡀⠀⠀⠀⠀⣀⡴⠟⠁⠀⠘⣿
⣿⣿⣿⣿⣿⣆⡀⡿⣟⠃⠀⠀⠀⠀⠀⠀⠘⣿⣛⣫⣽⠿⠋⠀⠀⠀⣠⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣠⠂⠀⠘⣖⠦⠄⠀⠀⠀⠀⢹⣧⡀⣀⣴⡾⠉⠀⠀⠀⠀⣼⢿
⣿⣿⠫⣿⣿⡇⡇⡇⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⢹⣦⣀⠀⠀⠀⠀⣨⣿⣿⡟⠋⠀⠀⠀⠀⢀⡾⠁⠘
⣿⣿⣀⡀⠁⠈⣁⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠻⡌⠉⠗⠒⠋⣩⠞⠈⢿⡄⣠⣤⠶⣿⡟⠀⠀⢀
⣿⣿⣿⢱⠀⢠⠟⡟⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣼⢧⣴⣿⣁⣠⠄⠀
⣿⣿⣿⡇⠀⣏⣠⠿⠆⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣸⠀⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⢿⡮⠇⠻⠛⠋⠀⠀
⣿⣿⣿⡀⠀⠸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡇⠀⡀⠑⣄⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠾⣧⠀⢀⣤⢤⣤⠞
⣿⣿⣿⣆⠀⣠⡶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⣠⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⠁⣾⣷⣤⠘⢾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣆⣉⡿⠛⠉⠉
⣿⣿⠁⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣃⡼⢣⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⣿⠞⠛⠋⠑⠀⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡆⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠒⢿⠁⠀⡀⠀⣠
⣿⣿⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠁⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠁⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡴⠂⠀⠀⠀⠀⠀⠈⠙⠳⡄⠀⠲⡀⢀⣀⣸⣷⣾⠅⣜⢉
⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢋⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠉⠉⠀⠈⢿⠁⠀⠉⠉
⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢻⢁⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡍⠀⢷⣤⣎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⢸⠀⣶⣿⣤
⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡟⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⠱⡽⣿⡀⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⢀⣾⡴⢋⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡭⠧⣼⡉⠙⠻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⣤⡾⠃⢀⣾⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠿⣶⡟⠲⣽⣤⣄⡹⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠟⢀⣴⣿⣿⣏⠏
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⢠⣿⠇⠀⠘⣿⣍⠓⠺⣯⣇⠀⣠⣤⣶⣦⠀⠄⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣿⣿⣿⣿⣏⣴
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢲⣴⣿⣿⢻⡁⠀⠀⢀⣾⠇⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⣸⢱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⠟
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣿⣿⣿⣿⠁⠈⠁⠀⠀⠈⣿⠀⠀⠑⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⡟⢁⣀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣤⣀⣀⣀⣀⣀⣀⣀⣤⣴⣶⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠘⣧⡀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢿⣾⣿⣿



⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⡤⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⢤⣀⠀⠀⠀⠱⣄⠳⢤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⠔⢋⡵⠻⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣷⣄⠀⠀⠘⣆⠀⠈⠉⠓⢤⡀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠁⠀⡞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣤⡀⠀⠀⠀⠀⠀⠀⠈⢻⡣⠀⠀⠘⡍⠲⢤⣀⠀⠈⠳⢦⡈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣆⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⢹⡀⠀⠈⠙⢦⣀⠀⠙⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⢤⡀⠀⠀⠀⠈⢧⡀⠀⠀⠀⡀⠀⠀⠘⢧⡀⠀⡇⠀⠀⠀⠀⠉⠳⣄⠀⠈⠓⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠙⠢⣀⠀⠀⠀⢳⡀⠀⠀⢳⠀⠀⢰⠈⢳⠀⢻⡀⠀⠀⠀⠀⠀⠘⢦⡀⠈⠺⣝⢦⡠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠸⣮⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⢸⠀⠀⠀⠈⣳⣄⠀⠀⢳⡀⠀⠈⣇⠀⠀⢣⡈⣆⢸⡝⢧⡀⠀⠀⠀⠀⠀⠹⣄⠀⠈⣿⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣇⡀⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⢸⠀⠀⡤⠊⠁⠈⠳⣄⠀⢣⠀⠀⠹⡀⠀⠈⢧⢹⡀⣿⠳⠿⣦⣀⠀⠀⠀⠀⠈⢧⠀⠸⡆⢙⣷⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢸⡅⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀⠀⣸⡠⠚⠀⠀⠀⠀⠀⠈⢳⡈⣆⠀⠀⢧⠀⠀⠈⣦⣧⢹⠀⠀⠈⠻⡉⢻⡀⠀⠀⠈⢷⠀⢳⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠈⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⡄⠀⢸⣷⠀⠀⣿⣿⣟⠀⠀⣀⣀⡙⣆⢷⡀⠀⠀⢸⡇⢸⣹⣄⡶⠉⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⣀⡴⡟⡇⣇⣠⠶⠒⠦⣤⡀⠀⠀⠀⠀⠈⢳⠀⢸⡏⣧⠀⢹⣼⢻⠃⡼⠁⠀⣀⠘⣾⣿⣄⠀⠀⣷⢸⠉⡛⠂⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡀⠀⠀⠀⢸⠞⠁⢰⢃⣷⠋⠀⠀⠀⠀⠀⣀⡄⠀⠀⠀⠀⠈⢷⢸⡇⠘⡇⠈⣿⠈⠻⣵⣿⣿⣿⣿⣾⡿⣿⡄⠀⢸⣿⠛⣇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠈⢳⠀⢠⠀⢼⠀⠀⡼⠀⠘⠀⣀⣤⣶⣶⣿⣷⣤⣔⣀⠀⠀⠀⠈⣿⡇⠀⠸⡀⠘⠀⠀⡿⣻⠙⠛⢃⣉⢻⠿⢿⠀⠈⣿⣀⡈⡆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠱⡄⠀⠀⠀⠀⢳⣸⠀⢸⡇⢰⠇⣠⣴⣿⣿⣿⠿⠛⠋⠉⠛⢛⣯⠁⠀⠀⠀⠈⠃⠀⠀⢷⣰⠀⠀⠙⠛⢿⡓⠚⠷⣆⣀⡸⣇⢠⡟⢿⣿⣽⣦⡀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠙⣄⠀⠀⠀⠀⠙⡀⠈⣷⣎⣴⣿⠟⠛⠋⠀⠀⠀⠀⠀⣀⣼⣧⠇⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠀⠘⣾⡁⠀⠙⣿⣿⣕⣄⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠘⠃⠀⠀⠀⠀⠙⣆⠹⣿⡟⠁⠀⠀⠈⠲⣤⣤⡶⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⡄⠈⠛⠛⠿⣯⡂⠀⠀⠁
⣠⣴⢾⠀⠀⠀⢀⠀⠀⡄⣄⠀⠀⠀⠀⠈⢷⡻⠤⠤⡴⠖⠉⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠈⣇⡀⠀⠀⠀⠀⠉⠓⠦⣀
⡿⠋⠈⣇⠀⠀⠈⠣⡀⠹⡌⠣⡀⠀⠀⠀⠀⠙⢦⡀⠀⢀⡠⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠋⢀⣀⣀⠀⠀⠀⠀⠀⢻⠉⠓⠦⣀⠀⠀⠀⠀⠀
⠠⠇⢠⠸⡄⢀⠀⠀⠺⣄⠘⢆⠙⢦⡀⠀⠀⠀⠀⠙⠢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠚⢉⣴⡿⠀⠀⠀⠀⠀⠸⣇⠀⠀⠙⢦⡀⠀⠀⠀
⠀⠀⢸⠀⢧⠈⣧⡀⠀⠈⠓⢬⣦⠀⠉⠢⡀⠀⠈⠢⣄⠈⠑⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣶⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⡿⣆⠀⠀⠈⠳⡀⠀⠀
⠀⠀⠈⠀⠘⣄⣷⡝⢦⡀⠀⠀⠉⠳⣄⠀⠈⠲⣀⠀⠈⠳⣦⡉⠒⠯⣗⡦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⢀⡧⠈⢳⡀⠀⠀⠱⡄⠀
⠀⠀⠀⡀⠀⠙⣯⢧⠀⢹⢶⣄⡀⠀⠈⢦⡀⠀⠈⢦⡀⠀⠀⠙⢷⣄⠀⠈⠉⠉⠉⠓⠒⠦⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⡿⠿⢿⡇⠀⠀⠀⠀⠀⢸⣧⢠⡀⠘⣆⠀⠀⠀⡄
⠀⠀⠀⠇⠀⠀⢹⡞⡆⠈⡏⢿⣿⣷⣤⡀⠙⣄⢀⠀⡹⡄⠀⠀⠀⠻⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡿⠁⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠁⣼⡿⡆⠘⢧⣜⣦⠀⠀⡇
⠀⠀⠀⠀⠀⢠⠞⠉⠉⠓⢷⡈⣿⣿⣿⣿⣷⠼⣯⡄⠱⡽⡄⠀⠀⠀⠘⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣶⡀⠀⠀⣀⣀⣀⣀⡷⠀⠀⢠⣿⣷⢻⡇⠀⢟⣿⣷⠀⠁
⠀⠀⠀⢰⠀⢿⡀⠀⠀⠀⠘⡇⣿⠛⠉⠁⠀⠀⠈⢿⡄⠹⡼⡄⠀⠀⠀⡌⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⡿⢻⠇⠀⠀⢀⣾⣿⣿⢸⡇⠀⢸⣿⡟⢀⠀
⠀⠀⠀⣸⠀⠀⢳⡀⠀⢀⡴⠃⢸⡄⠀⠀⠀⠀⠀⠈⢧⠀⣹⣿⣀⡀⠀⢸⡈⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⢀⣾⣿⣿⢣⡇⡀⠀⣸⠏⢀⡜⠀
⠀⠀⢀⠏⠀⠀⣾⡏⢹⠇⠀⠀⢨⣷⢶⣶⣶⣶⣟⣷⡾⠋⠁⠀⠀⠉⢣⡀⣧⠘⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⣴⣿⡿⣣⣿⡇⢁⣴⠇⣠⡞⢁⡀
⠀⠀⢸⠀⠀⣼⡇⣧⡼⠀⠀⠀⠀⣿⣿⡝⢿⣿⣷⡿⠃⠀⠀⠀⠀⠀⠀⢳⡿⡆⠙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⢷⣛⡥⠾⠛⠛⠉⠀
⠀⠀⠀⠀⣰⣿⡇⢿⠃⠀⠀⠀⠀⣼⣿⣿⣦⡹⡿⠀⠀⠀⡾⠒⢒⣢⡄⠀⠟⢳⡀⢹⠠⢤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣤⣼⣿⡿⠿⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢿⣿⡇⡼⠀⠀⠀⠀⢸⣿⡿⠋⠻⣿⡇⠀⠀⠀⡗⠊⢛⣛⡃⠀⠀⠀⠙⣞⠀⠀⠈⠉⠛⠻⢿⣿⣷⣿⣿⣿⣿⣿⡿⠟⠛⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢸⣿⡿⠃⠀⠀⢀⣴⡟⠁⡀⠀⠀⢻⣷⣄⡀⠀⡇⢴⣶⣏⡀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⢀⣈⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢸⡿⠁⠀⠀⢀⣾⣿⠀⠀⣇⢠⡀⢨⠇⠀⠙⠲⡧⠌⠛⠋⠀⠀⠀⠀⠠⠷⠤⠖⠒⠒⠒⠒⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣀⡘⠁⠀⠀⣴⢏⣞⡟⠀⠠⢻⠈⢻⡏⠀⠀⣀⣠⢔⠂⢀⣀⣀⣀⣠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⢀⡀⠀⠀⠀⠀⢀⣀⣠⡦⠀⠀⢲⣾⣶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢦⣻⣶⣤⣴⣾⡿⠿⠿⠿⠿⠿⠛⠿⠿⢷⣍⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⠟⠉⠁⠀⠀⠀⠀⢠⣤⣤⠀⠀⠀⠈⣙⡊⠻⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠏⠉⢀⣠⣴⣶⠶⠶⠾⣶⠛⠻⢶⣶⣤⣄⣉⠙⠶⣾⣿⣶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣾⡏⠀⢠⡾⠋⠉⠹⣆⠀⠀⣿⡀⠀⣾⣧⠀⢉⣿⣶⣄⠾⣿⣿⣿⢷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⡖
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡏⠁⠀⢈⡟⠀⠀⣿⢷⣄⡀⠀⣿⣷⣾⣿⣿⣿⢿⣿⣷⣿⣿⣿⣿⣷⣌⣉⠛⠷⠿⠿⢷⣶⣶⣦⣤⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⢾⣿⢇⡿⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢶⣀⣼⡇⢀⢀⣿⠀⠈⣿⣿⣿⣿⣯⣻⣿⠁⣠⣾⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⡿⣿⡟⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⢀⣤⡾⠟⢛⣿⠇⣸⡇⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡇⢸⣿⡟⠳⣶⣿⣯⠻⠟⣿⠿⣿⣸⣟⣿⣿⠷⠛⣿⠟⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⣀⣴⣿⠋⠁⠀⣸⡏⢠⡿⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣇⡇⢸⣿⣄⣀⣴⡿⠃⠀⠶⢶⠶⠶⣁⠉⠈⠁⠀⠀⣀⠀⠀⡿⣿⣿⣿⣿⣿⣿⣿⣿⣤⠀⠀⠀⣀⣀⣠⣶⢿⣿⠇⠀⠀⠀⡟⠀⠀⡇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⢸⣿⠀⠉⢻⣧⣴⢶⣶⣶⠀⠚⠉⠀⠀⠀⠀⣰⠁⠀⠀⢀⣿⣿⣿⣽⣾⣿⣿⣿⣿⣶⣿⡿⣿⡿⣿⣵⣿⠇⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡈⡏⣷⣶⣿⣿⡏⢙⡿⠋⠀⠀⠀⠋⠀⠀⠀⠘⢦⣸⣿⣿⣿⣿⣿⡿⠿⠿⣾⣿⣿⡿⢋⣾⠏⣰⠋⣸⠇⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣿⡿⣿⣿⢿⣟⣋⠀⠀⠀⠀⠀⠀⢀⣤⡦⣤⠀⠉⣿⣵⠟⠉⠁⠀⠀⠀⠀⠈⣿⠁⣾⠁⣰⠃⠀⣯⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⡀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡀⠀⠀⠀⢸⣿⣧⢹⣿⣿⣿⡍⠀⠀⠀⠀⠀⠀⠈⢯⡀⠘⠀⣸⠟⠁⠀⠀⠀⠀⠀⠀⠀⣼⣿⠀⡇⠀⣇⠀⠀⠸⣦⠀⠀⠀⠀⠘⢿⣄⠀⠀⠀⢳
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢳⡀⠀⠀⠀⠙⣿⣾⣿⣿⡿⣿⣦⣄⣠⠖⢀⣄⣀⡀⠙⣀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠀⢿⡄⠹⣦⠀⠀⠙⢷⡄⠀⠀⠀⠀⠙⢦⣀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣇⠀⠀⠀⠀⢸⣿⣿⣿⣧⣤⣾⣿⣿⣿⣿⢿⣿⣿⣿⣻⣿⡀⠀⠀⠀⠀⠀⡀⠀⠀⠀⣀⣿⣇⠀⢿⣆⠙⠳⣦⣀⠀⠙⠀⠀⠀⠀⠀⠀⠙⢷⣦
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⠿⠋⠳⣿⣿⢿⣻⠿⠟⠁⠀⣤⣶⣾⣿⣷⠶⠾⠿⠟⠛⠿⣿⣿⣿⣷⣄⠀⠙⠻⢶⣦⣤⣄⡀⠀⢀⣀⣤⣽
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡀⠀⠀⢿⡽⠟⠻⣶⡿⠉⠀⠀⠀⠀⠀⠀⣈⡵⠂⣀⣠⣦⣤⣴⠆⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣯⡉⠛⠶⣦⣘⣿⣿⣿⣿⠿⠟⠛⠉⠁⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣇⠀⠀⠀⠀⠀⣠⠏⠁⠀⠀⠀⠀⠀⣠⣶⣿⡷⣾⡿⠉⢀⣉⣤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣷⠾⠋⠙⠛⠋⠉⠁⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠀⣴⠏⠀⠀⠀⠀⠀⣀⣶⠿⢉⣵⣾⠉⠀⠂⠉⠉⠉⢉⣀⣀⣀⣀⠀⠤⠀⠀⠀⣸⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⢀⣾⡏⠀⠀⠀⠀⠀⣴⣿⡿⠲⣾⡋⠁⣀⣴⣖⡴⠞⠋⠉⠉⠉⠉⠉⠛⠛⠻⠷⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢃⣾⣿⣇⠀⠀⠀⠀⣼⡏⢋⣴⠶⠋⣀⣾⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣋⣉⣻⣦⡀⠀⣰⣿⣵⣿⠉⣠⠾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣀⠀⢀⣀⣀⣀⣀⣀⣠⣤⣤⣴⡶⠶⢾⣋⣉⡉⠛⢛⢿⣿⣶⣿⣿⠟⣡⡾⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠉⠻⣟⡻⢿⣍⠛⠻⢧⣄⡈⢉⣉⡑⠢⢌⣉⠙⢳⣿⣷⣿⣿⣿⣿⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣦⡀⠈⠳⣦⡉⠳⣄⠀⠈⠙⠷⣄⠉⠀⠠⢉⠳⣿⣌⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢿⣷⡄⠀⠈⠻⡆⠘⢷⡄⠀⠀⠸⣧⢀⣷⠈⣿⡿⣿⣿⡟⠁⠀⠀⠀⠀⢸⠀⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢹⡇⠀⠀⠀⠁⠀⠈⢻⣆⠀⢀⣼⡇⣿⣴⣏⣿⡿⠋⠀⠀⠀⠀⠀⠀⣿⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣤⠀⠀⠀⠀⠀⠀⠈⣿⣤⣾⣿⣿⣿⣧⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⡿⠀⢠⡄⠀⠀⠠⠀⣼⣿⡿⢋⣽⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠈⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢸⡇⢀⣿⠃⠀⠀⣠⣾⣿⣿⣴⡿⠟⣯⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡆⠀⠈⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢠⡿⣡⣾⣷⣦⡴⠾⠟⠉⠉⠉⠉⠠⠴⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣖⣶⣾⡻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣾⡿⠟⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣻⣷⣀⠿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⢻⢡⠋⠳⠿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢿⣿⠀⢿⡀⠹⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⢸⣿⡄⠀⢷⣄⠙⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠈⡯⠳⣌⠻⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣯⣆⠀⢷⡶⢿⡀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣆⠀⠹⣤⣧⡶⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣶⡄⢨⢏⣠⣿⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠉⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣄⡀⠀⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⡁⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠆⠀⠦⡄⠀⠀⠀⠀⠀⠀⠀⠀⣰⢿⣿⡏⠁⠇⠠⢀⠀⠀⢀⣀

⠐⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠂⢀⠀⠁⠀⠂⠀⠐⠀⠀⠂⠀⠐⠀⠠⠀⠀⠄⠀⠠⠀⠀⠄⠀⢀⠀⢀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⠀⠳⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠠⠐⠀⡀⠠⠀⠁⠀⠌⠀⠄⠁⠠⠐⠀⠠⠀⠄⠂⠀⠄⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣁⣤⣴⠶⠓⠛⠛⠉⠛⠓⠒⠯⠭⣉⡉⠓⠲⠦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠠⠀⠀⠀⠀⠄⠀⠀
⠀⠀⡀⠀⠀⠄⠂⠀⡀⠠⠀⠀⠄⠀⠠⠀⠀⡀⠀⠄⠀⠐⠀⠀⡀⠈⠀⠀⠂⠈⢀⣤⠾⠛⠫⠘⠀⣀⡴⠂⠀⣠⠞⢀⡶⢃⠀⠀⡉⠳⡄⢀⡀⠈⠙⠲⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⠀⠐⠀⢀⠠⠀⠀⢀⠠⠀⠀⠐⠀⠀⠄⠀⢀⠀⠄⠂⠀⢀⠀⠀⠐⠀⣠⣴⡿⠣⠉⠀⠀⣠⡾⠉⠀⢀⠜⢁⡴⠋⢠⠇⠀⠀⣧⠀⠘⢦⠈⠳⣄⢀⠀⠉⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⡀⠄⠂⠀⠀⢀⠐⠀⠀⢀⠈⠀⠀⠂⠀⠠⠀⠀⠀⡀⠄⠀⠀⠀⣢⣞⣿⠫⠀⡀⠀⣠⣾⠟⠀⠀⢠⠋⣠⢏⠄⢀⡏⠀⡎⠀⢹⠀⠀⠈⣇⠀⠈⠢⠈⠲⡄⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⠀⠀⡀⠐⠈⠀⠀⠀⠂⠀⢀⠀⠁⠀⠐⠀⢀⠀⠁⠀⠀⢀⢈⡾⣭⠟⡁⠀⡔⠀⡴⡿⠃⠀⠀⠀⣧⣰⢫⠂⠀⣼⠀⢸⠃⠀⢸⡄⠀⠀⡼⡄⠀⠀⠆⠀⡈⢢⡀⠈⢣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⢀⣀⠀
⠀⠀⡀⠄⠀⠀⠄⠐⠈⠀⢀⠐⠀⠀⠠⠈⠀⢀⠀⠀⡀⠂⠈⣰⠯⣵⠏⡐⠀⡜⠀⣼⡟⣡⠂⠀⠀⣼⣱⡟⠆⠀⢀⡏⢰⣸⠀⠀⠀⣇⠀⢈⡇⢷⠀⠀⠀⠀⢳⡀⠘⢦⠀⠹⡄⠀⠀⢀⣤⠴⠖⠛⠉⠁⠀⠀⠀⠀
⠀⠀⠀⢀⠀⠂⠀⡀⠄⠐⠀⠀⠀⠂⠀⠀⠄⠀⠀⠄⠀⠀⣴⢟⡾⠃⡞⠀⡘⠀⢸⡟⣠⠃⠀⢀⣾⢧⣿⠛⠀⣴⢸⠇⠸⡇⠀⠀⠀⢸⡀⠀⣧⢸⡆⠀⠀⠀⠀⣇⠀⠀⢳⠀⠹⣤⠶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠁⠀⢀⠠⠀⠀⠀⡀⠄⠈⠀⢀⠈⠀⢀⠀⠂⠀⢀⣾⠯⣾⠃⣼⠁⠠⠁⠀⣿⣰⠃⠀⠀⣼⣿⡟⣟⣀⣀⡇⢸⡃⠀⢿⠀⢠⠆⠀⢧⠀⣿⣰⠇⠀⠀⠀⠀⢸⠀⠀⠀⢧⢠⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠈⠀⠀⠀⡀⠀⠁⠀⠀⡀⠐⠀⠀⠠⠀⠀⠠⣰⣿⡟⣸⠇⢠⡇⠀⠄⣀⣼⣧⡿⠖⠞⢻⣟⡟⠙⡏⠁⢸⡇⠘⡇⠀⠈⢧⢸⡄⠀⠘⣿⠛⣿⡀⠀⠀⠀⠀⠸⡆⠀⠀⠘⣾⡵⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠁⢀⠈⠀⠀⢀⠐⠀⠀⢀⠀⠄⠂⠀⠀⠐⣼⣿⡟⢠⡟⠀⢸⠃⠀⠄⠉⣼⣿⠁⢀⠀⣼⣿⠁⠈⡇⠀⣸⣇⡀⢿⡀⢀⠈⢻⡄⠀⠀⠸⣿⣿⣇⡀⠀⠀⠀⠀⡇⠀⠀⠀⢣⡇⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠄⠀⠀⠄⠈⠀⠀⢀⠈⠀⠀⠀⢀⠀⢁⣾⡟⡾⠁⣾⠃⡈⢼⣻⠀⠂⠀⣿⣿⠀⠀⢠⣿⣿⠀⠀⣿⠀⣿⣿⡇⠸⣷⠘⣧⡄⠙⢦⡀⢐⡏⠻⣟⠉⠓⠦⣄⠀⡇⠀⠀⠀⠈⣧⠸⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢀⠠⠀⠂⠀⠀⠠⠀⠁⠀⠀⣼⡟⢸⠇⢸⡿⡄⠐⣸⢹⡄⠡⢰⡿⣿⡄⠂⢸⠹⣿⠀⠀⢻⡆⡿⣿⣷⢤⡘⣷⣜⣿⣷⡶⢽⣶⣧⡤⢹⡗⠄⠀⠈⢹⡇⠀⠁⠀⠀⢿⠀⡿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠂⠀⠀⠠⠐⣸⣿⢁⡿⠈⣿⡗⣯⠀⢼⣿⣧⠐⢸⣇⣸⣿⣾⣿⣤⣿⣆⠀⠈⣿⣽⡘⢿⣽⣧⠀⠙⢿⠛⣷⣄⠠⡇⠀⢸⡷⠀⠀⠀⣼⡏⠀⠈⠀⠀⢸⡀⢿⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⢰⣿⠃⣼⣹⠖⣿⢹⣿⠀⠸⣿⣿⣿⣿⡿⡿⢿⣟⢿⣿⣿⣿⣇⠀⠘⢎⠳⣈⣿⣿⣷⡀⢸⡀⠈⢿⣦⣇⠀⠀⣿⠀⠀⢠⣿⠇⠀⠨⠀⠀⢸⡅⢸⣈⣷⠀⢀⠀⡀⢀⠠⢀⠂
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⢸⣿⢠⣟⣿⣀⢻⣿⣿⡀⢁⢻⣿⠈⠻⣇⠀⢿⣿⣿⣹⣏⣿⠙⠃⠀⠀⠀⠈⠙⢿⢿⣟⡮⣧⣴⣿⣿⣿⣿⣾⣿⡄⢀⣾⣿⠀⠀⢸⠀⠀⣾⠁⢸⡇⣿⡇⢂⢂⡡⠆⠲⣄⠂
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢸⣿⢸⣿⣿⡆⣻⣾⣿⣧⢂⠸⣿⡀⠀⠈⢄⠈⠻⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⣽⣯⡽⣿⡿⢿⢻⣿⡟⣿⡇⡀⠀⢸⠀⣰⢿⠂⢸⡇⢿⡇⠈⠀⠀⠀⠥⡘⣇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠻⣿⣿⣿⣱⡿⣿⣿⣿⣎⣆⢻⣧⠀⠀⠀⠉⠓⠒⠒⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣷⣿⣷⠆⠘⣽⢟⡿⡽⠀⠀⣾⣸⢿⣼⠀⢸⡇⢸⡇⠀⠀⠀⠀⢢⠑⢼
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣎⡇⣿⣿⣿⣾⣹⣎⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠖⠒⢄⠀⠀⠀⠀⠀⠢⣍⣛⣛⡁⠀⠈⠁⣸⣿⠃⢀⣸⢯⣿⢸⠍⠀⣾⠇⣼⡇⠀⠀⢠⠘⠤⡉⢆
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⣸⣿⣿⣿⣿⣿⣇⢻⣿⣿⣾⣿⣏⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠈⠇⠀⠀⡨⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⠇⡐⢠⡿⣼⠇⣻⢀⣤⣿⢠⣿⠀⠀⠐⢢⡉⠖⣡⢂
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣀⣀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⡦⠭⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⢧⡜⣤⣿⣷⢿⢀⡟⣼⣿⣏⣾⠃⠀⢠⠉⢦⡘⡘⠴⣈
⠀⠀⠀⠀⠀⠀⢀⣤⠶⠟⠛⢉⣩⣽⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠿⣿⡣⣟⣼⣯⣿⣏⣠⣿⣿⣿⣿⠟⠁⠀⡐⢂⡍⠲⣌⢱⠣⡜
⠀⠀⠀⠀⢀⡶⠋⠁⢀⣤⢞⡿⢟⡿⣻⡽⢛⠉⢉⡛⠻⢿⣿⣿⣿⠏⠙⠿⣷⣆⠀⠀⠀⠀⠀⠀⠾⣟⠋⠓⠒⠲⠦⣤⣀⡀⠀⠀⠀⠀⠀⠘⢉⣡⣾⣧⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠤⡑⢬⡐⢣⡜⢪⡱⢜
⠀⠀⠀⢠⡟⠁⢀⡴⣫⠞⢉⣴⣫⡾⠉⢀⣼⠏⢋⠀⠀⠀⠘⣿⠻⡄⠀⠀⠈⠙⢧⡀⠀⠀⠀⠀⠀⠈⠉⠒⠒⠶⠖⠚⠋⠁⠀⠀⠀⠀⠀⠀⠉⢉⣽⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣅⠀⠀⡜⢠⡑⠦⡘⡵⢊⢧⡙⣬
⠀⠀⠀⢸⠀⣴⢋⡴⠃⣰⢏⡼⠋⠄⢠⡞⠁⠌⠀⠄⢠⠀⠀⣿⡆⠹⡄⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠟⣿⣭⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣀⣐⡄⢣⠘⢦⡹⡜⣭⢒⡹⡼
⠀⠀⠀⠈⡾⢁⠎⠀⣼⡿⢋⡴⠃⢠⡟⠀⠀⠀⣰⠀⢸⠠⠀⡇⢳⠀⢻⠀⠀⠀⠀⠀⢸⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠶⠛⠉⠀⣸⡟⣻⡿⠛⣿⠋⢈⠛⢏⠀⠈⠳⣬⡙⠯⣓⠿⣆⣳⠱⢦⣋⠶⠃
⠀⠀⠀⢸⢃⡟⠀⣼⠳⢡⡞⠁⢠⡟⠀⠀⠀⢠⡿⠀⠼⡐⣶⠃⢸⠧⣼⠃⠀⠀⠀⠀⢸⣿⣿⣿⣷⣄⡀⠀⠀⣀⣀⣤⣴⣶⣿⣿⠃⠀⠀⠀⢰⣿⢟⣡⡟⢠⡿⠀⡊⢱⠈⠙⢦⣄⠈⢿⣳⣌⠳⣬⡛⢿⣢⣽⠁⠀
⠀⠀⠀⢸⢸⡇⢰⠏⣰⡿⠀⢀⣿⠁⠀⠀⢠⣿⠇⠀⢃⣼⡏⠀⣾⢡⡏⠀⠀⠀⠘⠀⠨⣷⣻⣿⡳⣟⡿⣻⢟⡻⣽⢿⣿⣿⠛⢹⠀⠀⠀⠀⣿⢋⣼⡟⠀⢸⠇⠀⠀⢰⡆⠀⠀⢻⣧⠈⢷⡹⣦⡈⢿⣦⡙⢇⠀⠀
⠀⠀⠀⠸⣿⡆⡟⢠⣿⠁⠀⣸⡇⠀⠀⠀⣾⠝⠀⠘⣰⠏⠀⢰⣧⡞⠀⠀⠀⠀⠀⠀⠀⣿⠡⢻⣿⡼⣳⢏⣯⢳⣭⠟⠁⠀⠈⢺⠀⠀⠀⣼⡏⣼⣿⢀⠀⣻⠀⢸⠀⠘⡇⢀⠀⠈⢾⡧⡈⢷⣹⣧⠸⡿⠉⢻⡳⡄
⠀⠀⠀⠀⠙⣿⡇⣾⡇⡀⠀⣿⠀⠀⠀⣸⠃⠀⠜⣸⡏⠀⢠⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⣯⠱⠀⠘⣻⣵⣫⣾⡿⠃⠀⠀⠀⠀⢸⠀⠀⢰⣿⡡⣿⣿⠀⢂⣿⠀⢸⠀⠀⠇⢸⡄⠀⠈⢿⣱⠈⢿⣿⢀⡇⠀⠀⠱⡄
⠀⠀⠀⠀⣠⣿⢰⣿⢰⡇⢸⡏⠀⠀⢰⡇⠀⠀⢰⠋⡇⢠⣯⠏⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⢢⡕⠃⠀⠀⣡⠎⠀⠀⠀⠀⠀⠀⢸⠀⠀⣾⢻⣿⣿⣿⠀⣸⢸⠀⣿⠀⠀⠈⢸⡇⢠⡀⠘⣿⣇⠸⡯⡼⠃⠀⠀⠀⢻
⠀⠀⠀⢰⡿⣿⣼⡇⣿⡇⣸⡇⠀⠀⣾⠃⣀⢸⡏⠀⢧⢿⠏⠀⠀⠀⠀⠀⠀⠀⢀⣤⠞⠐⡀⢇⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠈⢧⣼⣇⠚⣿⣯⣿⣇⢾⡘⢿⣿⡇⠀⠀⠀⣿⠘⡇⠀⢹⣿⡤⢿⠁⠀⠀⠀⠀⠈
⠀⠀⠀⣿⠁⣿⣿⡱⢏⡇⣽⡇⠀⠀⣿⢰⡇⣿⠁⠀⢸⡾⠀⠀⠀⠀⠀⢀⡤⠖⢛⣿⡖⠐⠀⠸⡄⠀⠀⠀⠀⠀⢠⡏⠀⠀⠀⠀⣸⡏⠛⠾⣽⣿⣿⣿⣿⡇⠈⣿⣿⡀⠀⠀⢻⡄⣷⠀⢘⡿⣿⠈⡇⠀⠀⠀⠀⠀
⠀⠀⣸⡇⠀⢹⣿⣱⢋⡇⢿⣇⠠⠀⣿⡿⣾⡟⠀⢀⠀⣹⣀⣠⡤⠶⠋⢡⠤⠂⠀⢸⣧⠀⠀⠀⣧⠀⠀⠀⠀⢀⡏⠃⠀⠀⠀⢀⣿⠁⠀⠀⠀⠉⠛⠿⢿⣿⣤⣿⣽⣷⣀⡀⢸⠅⣿⠀⢸⡀⢸⡀⣷⠀⠀⠀⠀⢀
⠀⠀⣿⠀⠀⠀⢻⣧⢋⣧⢹⣿⣸⣆⣿⣥⡟⠋⠉⠉⠉⠀⠐⢲⣤⣦⣅⣑⣲⣤⣀⠀⣿⡆⠀⠀⠙⠂⠀⠀⠀⡞⠀⠀⠀⠀⠀⣼⣏⣤⣭⡕⠒⠒⠊⠀⠁⠀⠀⠀⢠⠀⠈⠉⠙⠛⢻⣥⣸⡇⢸⡇⢹⠀⠀⠀⢀⡞
⠀⢀⡇⠀⠀⠀⠘⣯⣟⣹⡼⣿⣽⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠛⠛⠻⠿⠿⣿⠧⠿⠟⠻⢄⠀⠀⣠⠤⠛⠛⠀⢀⣿⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢧⢨⡇⣼⠀⠀⠠⠋⠀
⠀⢸⡇⠀⠀⠀⠀⠹⣶⣣⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣇⡏⠀⠀⠀⠀⠀
⠀⠸⡇⠀⠀⠀⠀⠀⢈⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢿⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡁⠀⠀⠀⠀⠀
⠀⠀⢿⠀⠀⠀⠀⢀⡞⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⢿⡗⠀⠀⠀⠀⠀⠀⠀⢀⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⠀
⠀⠀⠘⣆⠀⠀⠀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠘⣄⠀⠀⣿⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⡀⠀⠀⠀⠀⣼⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠘⢷⣄⣿⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠀⠀⢰⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠙⣿⡀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣿⣷⣶⣶⣿⣅⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡇⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢻⢆⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣭⣭⣭⣭⣿⣿⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣸⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⢎⡰⠀⠄⠀⠀⠀⠀⠀⡐⢈⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣭⣭⣿⣿⣿⣿⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠹⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠘⣧⢒⠡⠀⠄⠀⠀⠄⠡⢀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠉⠉⠉⠉⠉⢹⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠙⣄⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣿⡌⢣⠈⠄⠡⠈⠄⣁⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⣿⣿⣿⣦⣤⣤⣤⣤⣼⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣀⠈⢆⠀
⠀⠀⠀⠀⠀⢀⡴⢋⣹⣎⠱⢊⠠⠁⠌⡐⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⢀⡇⠈⠣⡀⠀
⠀⠀⠀⠀⢠⣾⡶⠛⢡⣯⡅⠣⠄⡑⠠⣼⠃⠀⠀⠀⠀⢀⣤⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣷⣿⣿⣿⣿⣿⣟⣿⣷⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣹⣲⢦⡀⠀⠀⠀⠸⡆⠀⠀⠀⠀⠀⢸⣷⠄⠀⣷⡀
⠀⠀⠀⠀⣾⡏⠀⠀⣾⢹⣎⡑⢆⠐⢠⡏⠀⠀⠀⠀⢰⢻⣿⣭⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠿⣿⣿⡿⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢉⣧⣾⣏⠹⡄⠀⠀⠀⢻⠀⠀⠀⠀⠀⢸⡿⠀⠀⡞⢷
⠀⠀⠀⠀⢿⣷⣀⠀⣷⡾⣷⡈⠦⠈⢼⠃⠀⠀⠀⠀⠸⣌⠙⠖⣅⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣌⣉⢹⣼⠞⠁⠀⠀⠀⣼⡆⠀⠀⠀⠀⢸⡅⠀⣰⢃⡞
⠀⠀⠀⠀⠀⠙⠛⠉⠺⣇⣿⢌⡓⢈⢺⡄⠀⠀⠀⠀⠀⠈⠙⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⠀⢸⡉⠛⠛⠉⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⢦⢹⠀⢺⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⢺⡄⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⢎⡰⠁⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣟⣧⡜⣷⣌⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠇⠀⠀⠀⠀⠀⢽⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⢢⠱⡈⠌⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⠟⠋⠈⠓⢮⣝⣳⣤⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠋⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢢⠝⡐⠌⡄⡙⢳⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣿⠿⠋⠁⠀⠀⠸⠀⠀⠉⠓⠾⣝⣳⢦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⣼⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡜⢬⢣⠘⠰⢠⠁⣿⢛⠳⡶⣤⣤⣤⣤⣤⠶⣶⣻⡿⠟⠋⠁⠀⠀⠀⠀⠀⠈⠀⠀⠀⠄⠀⠀⠉⠛⠺⠯⣿⣳⣶⣶⣶⣶⡶⠶⠟⠛⢹⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⣆⠣⣍⠒⣡⠊⣿⠈⡓⠲⢥⣾⣴⡧⠾⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⢀⠀⠀⠀⠀⠀⠀⠀⠀⡿⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡷⣌⠳⡌⡒⢄⠊⣿⠀⢂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠄⠠⠀⠀⠀⠀⠀⠀⠀⠀⣏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢰⠣⡜⣡⠊⠔⣹⠀⠀⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠌⠠⠁⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢣⡝⠴⡡⢎⠰⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⢀⠂⠡⠀⠀⠀⠀⠀⠄⠀⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⢚⠥⡓⣌⠢⣙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡆⢈⠡⢀⠀⠀⠄⠂⠌⠐⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣯⢎⠲⡱⢨⡑⠤⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣽⣆⠐⡡⠐⣀⠂⡁⠎⣘⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣎⢣⡑⢣⡘⠄⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠘⠻⣧⣀⠱⢀⠆⣑⠢⢸⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠚⡄⠃⡜⠰⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡇⠈⢄⡀⠛⠳⢌⠒⠤⡃⣽⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢩⠐⡡⢂⡑⢼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠁⢂⠰⢁⠲⠨⠜⡰⢱⣿⠀⠀⠀⠀⠀⣸
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣣⠘⠄⡡⢐⣺⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠃⠀⢻⡌⠐⣀⠣⢌⡑⣊⣴⡿⠃⠀⠀⠀⠀⠀⣟
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⣆⠈⠔⣡⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠁⠀⠀⠀⢿⣆⢀⣢⡴⢺⡿⠋⠀⠀⠀⠀⠀⠀⢠⢟
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣗⣹⠀⢦⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠀⠀⠈⢿⣌⣳⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⢺
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠴⣩⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢫⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⣭
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⠟⡰⢀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⡀⠀⠀⠀⠀⠀⠀⠀⢀⡟⣲



⠀⠈⠱⣦⡀⠀⢲⡀⠀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀⢢⣄⠀⠉⠻⣿⣿⣷⣦⣄⠐⠨⠉⠉⠉⠉⠙⠛⠛⠓⠒⠒⠲⠶⠶⠶⢤⣤⣤⣤⣤⣤⣤⣤⣄⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠈⢻⣦⡼⣷⠀⠀⠀⠀⠀⠀⠈⢷⡀⢀⡠⣄⠙⣷⣦⡀⠘⠻⢿⣿⣿⣿⣦⣌⡙⠳⢦⣄⡀⠀⠀⠀⠀⠐⠒⠒⠶⢤⣤⣤⣾⣿⡿⠉⠉⠉⠉⠉⠉⠙⠙⠛⠓⠒⠒⢶⣶
⠀⠀⠀⠀⣼⢿⡹⣾⣷⡀⢠⣄⡀⢠⣤⡈⢿⣄⠻⣎⠉⠛⠿⣿⣦⣄⠀⠈⠻⢿⣿⣿⣿⣷⣦⣄⣈⣛⠶⢦⣤⣄⢀⢀⡀⠀⢠⣾⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻
⠀⠀⠀⠀⣿⡿⣳⡍⠻⢿⡺⣮⠻⠛⠈⣻⣆⢿⣷⣿⠿⣶⣤⣽⣷⣽⣷⣾⣿⣟⡛⠛⠿⣿⡿⢿⣿⣿⣷⣦⣄⣀⣀⠈⠁⣰⢿⣿⡿⠅⠀⠀⠀⠀⠀⠀⠀⠁⠁⠀⠀⠄⠤⠤⠀
⠀⠀⠀⢸⣿⢿⣗⢻⡄⠲⢿⣌⣳⡄⠀⠀⠛⠘⢿⡛⢦⣆⠍⠙⠛⠻⣟⠣⣈⠉⠛⠲⠤⣬⣙⣶⢬⣍⣉⣉⡩⠽⢛⠛⠛⠛⠈⢻⡱⣿⡄⢀⡀⠀⠀⠀⠀⠀⠈⣀⠤⢤⡵⠁⠀
⠀⠀⠀⣿⣿⠈⢿⡀⢿⡄⠀⠻⣇⢻⣄⠀⠀⠀⠈⢳⡄⠉⠳⢦⣄⠀⠉⠳⣌⠑⡤⠀⢀⣠⣬⣿⣿⣿⣿⣿⣿⣿⡿⠶⠤⠀⠀⠀⢻⡜⣿⡈⣷⠀⠀⠀⠀⠀⡰⣬⣿⣾⠃⠀⠀
⠀⠀⢰⠿⡏⠀⠘⢷⠈⢿⣄⠀⠰⠳⠻⣆⠀⠀⠀⠀⠹⣄⠀⠀⠉⠛⢦⣄⣈⣻⣶⣿⣿⣿⣿⣿⣿⣿⡋⠉⠉⢹⡇⠀⠀⠀⠀⠀⠀⢳⢻⣷⠹⣧⡀⠀⠀⣦⡹⣿⣿⠃⠀⠀⠀
⠀⠀⢸⠀⡇⠀⠀⠘⢷⣿⣿⣆⠀⠀⠀⠙⢷⡀⠀⠀⠀⠘⢧⡀⠀⢀⠿⣳⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣯⡽⠆⠀⠁⠀⠀⠀⠀⢀⠔⠈⣧⢻⠀⣿⣧⠀⠈⣿⣿⣿⡏⠀⠀⠀⠀
⠀⠀⣾⠀⣇⠀⢠⡄⠈⢻⣿⣜⠷⣄⠀⠀⠀⠹⣦⡀⠀⠀⠀⠻⣜⠁⢘⣿⣿⡟⣻⡿⣿⣤⣿⣫⣿⣿⡟⠀⠀⠀⠀⢀⣠⣤⠞⢁⡴⠚⢹⣼⠀⢸⣿⣧⠀⡘⣿⣿⠁⠀⠀⠀⠀
⠀⠀⣷⠀⣿⠀⣼⡟⠢⣄⠹⣿⣆⠈⠳⣤⡀⠀⠈⠳⣄⡀⠀⠀⠙⣷⢼⠇⠿⣷⣭⣀⣤⠾⠛⠉⠽⠋⠀⠀⠀⢀⣴⡿⠋⣡⠴⠋⢀⡴⣻⣿⡀⢸⣿⣿⣧⣿⣿⡿⠀⠀⠀⠀⠀
⣠⣼⠇⠀⣿⣾⠟⠁⠀⠈⠑⠎⢻⣧⠀⠈⠙⠶⣄⡀⠈⠻⢷⣶⠞⠁⠀⠀⠀⣘⠛⠉⢀⡴⠊⠀⠀⠀⠀⡠⠖⠙⠉⢠⠚⠁⠀⢀⡽⠊⠉⣿⠁⢸⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀
⣿⡇⠀⢰⣿⡀⠀⠀⠀⠺⠀⠀⠀⠙⢷⡀⠀⠀⠈⠙⠳⠦⢼⠉⠓⠦⣀⣀⢸⣁⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠈⠀⠈⢠⣿⠀⢸⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀
⣏⣿⡄⠘⣇⣧⡀⠀⠀⢀⣀⡠⣄⡀⠀⠻⣗⠦⣀⠀⠀⠈⠳⢤⡀⠀⢀⣠⡠⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡶⢏⡏⠀⢸⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀
⠻⣿⣧⠀⢻⣿⣧⣓⣦⣤⣤⣶⣤⣤⣤⣀⡈⠳⢄⡉⠓⠢⠤⠤⢘⡶⣿⣎⠀⡠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠉⠀⣾⡇⢀⣾⣿⣿⣿⣻⢻⠀⠀⠀⠀⠀⠀
⠀⠙⣿⡀⠘⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣾⣥⠀⠀⠙⠒⠀⢀⡴⣫⠞⠉⣫⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠁⣧⣿⣿⣿⣿⡟⢹⣿⡆⠀⠀⠀⠀⠀
⠀⠀⠈⢻⣼⣻⣿⣿⣟⢿⡀⢳⣿⡿⢉⣿⠟⠀⠀⠀⢠⡼⢫⠞⠁⠀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠃⠀⣿⠏⣿⣿⡟⢠⣾⣿⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠻⣮⣿⣿⣿⣧⠙⠀⠉⠿⣋⠁⢀⠀⠀⠀⠉⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡼⠁⠀⣼⡏⠀⣿⠋⠁⣼⣿⣿⣿⠀⠀⠀⠀⠀
⡆⠀⠀⠀⠀⠙⣿⣿⣿⣿⡆⠀⣇⠴⠃⢀⡏⠀⠀⡀⠀⢀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠀⠀⢠⠟⠀⢰⠃⢸⠀⢋⣿⡾⣹⡇⠀⠀⠀⠀
⠇⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⡆⠀⠀⢀⣼⠇⣠⠂⠀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⣠⠏⠀⢀⡟⢠⡟⠀⢸⣟⡱⢟⣿⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣷⡁⠀⠺⢧⠞⠁⠀⠈⠀⠀⠀⠀⠀⣠⡤⠤⠤⠤⢤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠖⠁⠀⠀⣼⠁⢾⡇⠀⢸⡏⠁⠘⢉⡧⠀⠀⠀
⠀⣾⣿⡇⠀⠀⠀⠀⣰⣿⡇⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠋⠀⠀⠀⣠⣴⣜⢿⣿⣿⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⣰⢸⣷⠀⢸⡇⠀⠉⠀⠐⠂⠀⠀
⣾⣿⡟⠀⠀⠀⠀⢠⣿⣿⠃⡿⣿⠀⠀⠀⠀⠀⠀⠀⣀⣴⣏⣀⣀⣠⣶⡉⢿⣿⣿⣷⣿⣿⣿⣿⠋⠉⠳⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠃⣿⢸⠈⣧⢸⡇⠀⠀⠀⠀⠀⠀⠀
⣿⡟⢀⣀⣠⠀⢠⣿⣿⣿⢠⡀⣿⡆⠀⠀⠀⠀⠀⠘⢻⣿⣿⣿⣿⣿⣿⣿⣌⠻⣿⣿⣿⠿⢿⡧⠀⠀⠀⠈⠙⣦⠀⠀⠀⠀⠀⢀⠀⠀⢿⡀⣿⢸⡄⠘⣟⣿⡀⠀⠀⠀⠀⠀⠠
⡈⠀⠀⠻⠟⢠⣿⣿⣿⣿⢸⢤⣿⣷⠀⠀⠀⠀⠀⠀⠀⠻⣇⣿⣿⣿⣿⣿⣿⣷⡌⠏⠁⠀⢸⠁⠀⠀⠀⠀⠀⠈⢧⠀⠀⠀⠘⢮⢧⠀⠈⢧⣿⠘⣇⣰⣿⣿⣧⠀⠀⠀⠀⠀⠡
⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⢸⢿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀⠀⠀⢻⣣⡀⠈⢻⣄⠘⠻⣿⣿⣿⣦⠀⠀⠀⠀⠀
⠋⢻⣶⣶⣿⣿⣿⣿⣿⣿⡿⣻⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⡀⡌⠻⣿⣿⡛⣿⡇⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠱⠟⠀⣨⣿⣷⣤⣈⠛⠿⣿⣧⡀⠀⠀⠀
⠀⢼⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⠿⣄⡀⠀⠀⠀⠹⣝⡄⠙⢿⣿⣿⠅⠀⠀⠀⠸⠃⠀⠀⠀⠀⢀⣀⡖⠙⣆⠀⠀⠀⠀⠀⠀⣠⣾⣷⣿⣿⣿⣿⣿⣿⣶⣾⣯⣀⡀⢀
⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⢧⡀⠈⠛⢄⡀⠀⠀⠈⢞⣆⠀⠙⢿⡇⠀⠀⠀⠀⠀⠀⣀⡦⠞⠋⠀⠉⠳⣌⠓⣤⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡋⠁⠀⠀
⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⠛⡇⠀⠀⠀⢉⣗⠦⠤⠝⠲⣤⡀⠀⠉⠀⠀⠀⢹⡀⢤⣤⡤⠖⠊⠉⠀⠀⠀⠀⠀⠀⠀⠉⢋⣴⣾⣿⣟⣿⣿⣟⣿⡽⢿⣿⣿⠽⠛⠉⠀⠀⠀⠀
⠀⣀⣐⣿⣿⣜⣿⢻⣿⣿⣿⡆⣷⠀⠀⠀⣿⡏⠀⠀⠀⠀⠀⠉⠒⢤⣀⠀⠀⠀⢷⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠿⠟⠛⠛⠛⠛⠛⠛⠒⠒⠒⠓⡶⠦⠤⠤⠤⣄⣀⡀
⠀⠀⢀⠴⢿⣧⠘⢿⡿⠿⣿⣧⠹⡆⠀⠀⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠈⠙⠶⢄⣘⠆⠹⡄⠀⠀⠀⠀⠀⠀⠀⣠⡞⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠙⠯⣀⠀⠈⢿⡄⠀⠻⣿⣿⡿⣷⣹⣄⣀⡤⠖⠋⠉⠀⠙⠳⣄⡀⠀⠀⠀⠀⠀⠈⠓⢦⠸⣦⣀⣀⡀⣀⣴⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠈⠓⠦⣌⢳⣄⠀⣼⠟⠋⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠈⠛⠦⣄⡀⠀⠀⠀⠀⠈⠳⡈⢧⡀⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣢⣤⣄⣀⡀⠀


⡀⠀⣠⠜⣹⢟⠛⠯⢶⡦⡤⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⡤⠚⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡀⣀⠝⣽⡧⢤⣿⡻⢝⣻⡦⠳⡄⠀⠀⠀⠀⠀⠀⢠⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣖⠉⢦⡀⢀⠘⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣄⠉⢸⢸⠈⣏⣍⢾⣽⣹⡁⣇⠙⡆⠀⠀⠀⠀⠀⣾⢠⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠾⠀⠀⠀⢹⢦⠰⢰⠀⠀⠀⠰⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠉⢹⣄⢳⡿⢿⠶⣃⡿⢳⣽⣴⠧⠀⢀⣀⣤⣾⣰⡇⠀⠀⠀⡀⠠⠠⢀⡄⠀⠀⢀⢔⡿⠁⠀⠀⠀⠀⠀⣷⡏⠾⡆⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢯⡙⢯⣭⣯⡭⣤⣞⣟⠁⠉⠉⢉⡴⠟⣾⣿⣇⡄⢠⡿⣰⣤⣾⣴⢀⡆⠀⠀⡟⠀⠀⠀⠀⠀⣠⠆⣿⣿⣶⢻⢆⠀⠀⠀⠘⣀⡀⣄⣦⣄⣀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠨⠷⠤⠭⠽⠟⠉⠉⠀⠀⠀⣢⣤⣶⣿⢿⠟⢇⣼⣧⣿⣸⣯⣿⣸⡟⣴⣾⠀⠀⠀⠀⡠⣊⣸⠀⠁⢻⣿⣿⣧⡀⠀⢀⣐⣿⢿⣿⣿⣿⣧⣄⣤⠆⠀⠀
⡇⠀⠀⠀⠀⠀⠀⠀⠀⣀⢀⣀⣀⢀⣾⣿⣿⣿⡿⡯⢠⢸⣽⣿⣿⣿⣿⣿⡟⣿⣽⡿⠀⠀⠀⠀⣱⣿⡫⠀⠀⠀⠻⢿⡟⡍⢰⣾⣜⣻⣦⣽⣿⣿⣿⣿⠃⠀⠀⠀
⠇⠀⠀⠀⠀⠀⣠⣴⣶⣾⣿⣿⣿⣿⣿⣿⣿⡿⠁⣷⣿⢸⠋⣿⣿⣏⣿⠟⣿⣿⣿⣇⠀⠀⠀⠀⠋⠉⠀⠀⠀⠀⠀⣼⡧⠗⠊⢉⢻⣟⠓⠈⢹⣾⣿⣏⠀⠀⠀⠀
⣷⣶⣶⣤⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⣞⣽⣿⣗⣼⣿⣿⣟⡿⣿⣷⣻⡝⠻⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡓⡶⠀⠪⢨⣿⡇⠀⠈⣿⣿⣿⡀⠀⠀⠀
⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣵⡯⢾⡿⣿⣿⣿⢟⣽⣿⣶⡿⣿⣦⣵⡄⠙⠀⠀⠀⠀⠀⠀⠀⢀⣀⣾⣿⢴⣗⣀⣠⣾⡟⠁⠀⣠⣿⣿⣿⣇⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣦⣽⣿⣿⣿⣿⣿⡿⠙⢀⣀⡴⠋⢰⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣷⣾⣗⢄⣀⠀⠀⠀⠀⠖⠈⣹⣟⣿⣏⣏⣨⣿⠙⠻⣶⣾⣿⣿⣟⣻⣿⡀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢻⢆⣴⠟⠉⠀⢴⣷⣿⡿⢚⣿⣯⠟⠛⠛⠃⢻⣿⠾⠿⢷⣦⠽⠓⣚⣙⠒⢴⣿⣿⣿⣿⣿⣿⣿⣧⣤⣿⣽⣿⣿⢿⠻⣿⣷⠀⠀
⣿⣿⣿⣿⡿⠛⠛⠿⣿⣿⣿⣷⡷⠛⠁⣠⣞⣵⣛⣽⣿⡿⠟⠍⠀⠀⠀⠀⠀⠀⠀⠒⠂⠉⠐⠊⢸⢋⣟⣳⡆⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢻⡏⣷⡀
⣿⣿⣿⣿⡄⠀⠀⣀⣼⣿⣿⡽⢡⣴⣶⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡻⣷⢾⢥⡤⣤⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠹⣷
⣦⡈⠻⣿⣿⣶⡾⡟⡽⢻⣻⣷⣿⡿⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⣿⣿⡿⣃⡀⣈⡉⠛⠿⣿⣿⣿⣿⣿⣧⠀⢠⣴⣾⣿
⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠓⠋⠀⣿⢯⡿⡿⠀⢀⡞⠁⠉⢻⣿⣿⣤⣾⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢷⡹⣿⡇⠀⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡄⠀⠀⠀⠀⡨⣤⣄⠀⠰⠿⠿⠋⠀⢠⣿⣧⠀⠀⠀⠙⣿⡿⢿⣿⣿⣿
⠋⠉⠙⠛⠛⣿⣿⣿⣿⣿⠸⣇⢻⡇⠀⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠄⠀⠀⠈⢠⠟⣿⣷⣦⣄⡀⠀⠀⠈⠺⣿⣇⠀⠀⠀⠉⠁⠀⢻⡿⣿
⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⡇⢻⣿⣷⠀⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣷⣦⣽⣉⠉⠻⠿⠾⠇⠀⠀⠀⠈⠁⠈
⠀⠀⠀⠀⢣⣙⣛⣿⠟⢻⡗⡄⣾⣿⡀⠀⢸⡄⠀⠀⠀⠀⠀⠀⢠⠜⠹⢆⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣦⣤⣶⣾⣻⣥⣀⠀
⠀⠀⠀⠀⢸⣿⠋⣠⣶⣛⣽⣼⣿⠏⣇⠀⠀⢷⡀⠀⠀⠀⠀⠀⠊⠢⢤⣸⢴⡗⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠈⠙⠻⠿⠿⠿⠿
⠀⠀⠀⠀⣾⣿⣾⣿⣿⣿⣿⣿⣿⠀⠈⠀⠀⠸⣷⠀⠀⠀⠀⠀⠀⢀⣤⠽⢸⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣯⣻⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀
⣷⣦⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⢹⣷⣆⡰⠀⠀⠻⢯⡁⠢⢻⣄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡿⣟⣸⢖⣽⠹⣿⣿⣿⣿⣿⣿⣿⣷⣦⣤⣀⣀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡍⠛⠐⣲⡄⣰⣾⣿⡿⠁⠀⠀⠀⠀⠁⠀⠀⡿⠂⠀⠀⠀⠀⠈⠂⠀⠀⣼⣿⣿⣿⣿⣿⣇⣧⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢸⣿⣾⣿⣿⡿⠁⠀⠀⢀⣀⣀⡀⢀⣀⣇⣤⣶⣿⣿⣶⣶⣶⣶⣾⣿⣿⣿⣿⣿⢟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠿⡿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠃⠘⢿⣿⣿⣿⣥⣶⣶⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣟⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣿⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣟⣻⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⢿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⡩⣻⠟⠋⠉⠉⠉⠉⠛⢿⣿⣿⣿⣿⣿⣿⡿⠋⠉⠀⠀⠀⠀⠀⠀⠉⠻⢶⣄⠀⠀⠉⠙⠿⣿⣿⣿⣿⣿⣿⣶⣤⣤⣀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠄⢻⡃⠀⢠⡮⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠃⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⣄⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⢟⢿⡿⣟⠀⠀⣇⣰⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠙⢷⡀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⢿⢇⠀⢷⣿⠰⢠⢸⡏⠀⠀⠀⠀⠀⠀⠀⣠⢶⣶⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡤⠲⡀⠀⠀⠀⠀⠻⣄⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿
⣿⣿⣿⣿⠁⣾⠺⡆⠈⣿⠀⠀⢧⣇⠀⠀⠀⢀⡠⠊⠉⠇⣀⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢱⡀⠀⠀⠀⠀⢹⣆⠀⠀⠀⠀⢀⡼⠋⠙⣿
⣿⣿⣿⣿⣄⢸⣷⠁⠀⠁⠀⠀⠘⣿⣓⣲⠶⠋⠀⠀⣰⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⡄⠀⠳⡢⠄⠀⠀⠀⣿⡆⢀⣤⠞⠁⠀⠀⢠⢿
⣿⡏⠻⡿⠽⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀⢷⡤⢀⣀⣀⠼⡿⣯⠁⠀⠀⣀⣠⠋⠈
⣿⣧⢢⠀⢠⣾⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠈⠂⠈⠀⠐⠚⠁⠘⣧⣾⣋⣿⠃⠀⠐
⣿⣿⡎⠀⡎⡼⠌⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀⡀⡇⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣯⡏⠿⠿⠋⠀
⣿⣿⡇⠀⠘⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠜⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⡀⠱⡄⡄⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⣠⣤⣤⣞
⣿⡿⣷⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⢰⠀⡴⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣟⣼⡿⢆⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠔⠋⠁⠀
⣿⡇⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡞⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠠⠊⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡠⠀⠀⠀⠀⠐⠲⢤⠀⠠⡀⠀⢸⣦⣔⢠⠞
⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⢫⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡅⠀⠀⠀⠀⠀⠀⠀⠡⡀⠉⠁⠈⢿⠁⢈⠉
⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢎⢧⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣷⣤⣽⣾⠀⢄⠀⠀⠀⠀⠀⠀⠀⠀⠏⡇⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠀⢸⢀⢿⣷
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣻⠾⢽⣧⡈⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⢀⣰⠟⢁⣾⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠿⣴⠺⣧⣤⡹⢧⡀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡿⢃⣠⣿⣿⡏
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⣰⣟⣼⠗⠀⠘⣷⠉⠙⢿⣄⣴⣶⣶⣄⡂⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣴
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣽⣿⠟⠸⠀⠀⢸⡏⠀⠄⢘⣿⣿⣿⣿⣿⣿⣿⣾⣴⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⠟⠁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⣀⣀⣀⣀⣀⣀⣠⣤⣶⣿⣿⣿⣿⡿⠀⠀⠀⠀⠈⢷⡀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⡏⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣯⣶⣿

$CUM

*/
pragma solidity ^0.8.20;



abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract CUM is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"CUM in me Senpai\n\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⠤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⣀⠴⠚⠉⠁⠀⠀⠀⠀⠀⠈⠉⠳⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⣠⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⣆⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⢀⡞⡥⠀⠀⠀⠀⣠⠴⢀⣠⠤⢦⡀⠀⠀⠀⠀⠀⠈⣆⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⢠⡞⢸⠁⠀⠀⣠⢚⡥⠚⠉⠀⠀⠘⣗⡄⠀⠀⢰⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⢾⠇⡎⠀⠀⣰⡳⠋⠀⠀⣠⣤⠶⠢⡿⣸⣆⠀⠈⣧⣄⢸⠁⠀⠀⠀⠀⠀⠀\n⠀⠀⢸⡄⢳⣠⣾⡟⠓⠆⠀⠘⠙⢀⣤⣶⢿⣤⣹⡅⠀⣿⠈⣿⡇⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⡇⠸⡇⣾⡛⣶⡦⠀⠀⠀⠛⢱⢼⣷⠸⠋⢣⠀⡇⣹⠛⡇⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⢱⠀⠹⣏⠉⢟⣻⣀⠀⠀⠀⠐⠛⠛⠐⠀⠘⣴⡽⣇⠀⢸⡀⠀⠀⠀⠀⠀\n⠀⠀⠀⠈⢇⠀⠘⡄⠀⠀⢸⡁⠀⠀⠀⠀⠀⠀⠀⠀⣿⢀⢹⡀⠈⣧⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠈⢦⠀⢻⢦⡀⠈⠰⠶⠒⠂⠀⠀⢀⡤⠀⡇⢘⡆⢇⠀⠸⣷⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠳⡼⡀⣟⡶⢄⡀⠀⢀⡠⠖⠁⠀⢀⡇⢸⢻⠸⡀⠀⣿⢇⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⢠⠏⢳⠟⢀⠷⠈⣹⡇⠀⠀⠀⠀⣼⢣⡞⢸⠀⡇⢰⣼⢸⠀⠀⠀\n⠀⠀⠀⠀⠀⢀⠎⣠⠋⢀⡼⠟⠊⠟⠀⠀⠀⠀⠀⣿⠀⠑⢯⣀⣇⣎⢏⡞⠀⠀⠀\n⠀⠀⠀⢀⡠⠾⠔⠓⢞⣁⣀⣀⠀⠀⠀⠀⠀⠀⠀⢻⣀⣀⣀⡈⠛⠿⠯⣀⠀⠀⠀\n⠀⠀⢠⠋⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠐⠉⠉⠉⠉⠉⣧⡀⠀⠀⠀⠀⠀⠀⠑⡄⠀\n⠀⠀⢻⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠧⠀⠀⠀⠀⠀⠀⠀⢹⡆\n⠀⠀⢸⠀⠀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⠀⠀⠀⠀⠀⠀⡼⠃\n⠀⠀⠘⡤⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡀⠀⠀⠀⠀⢠⠇⠀\n⠀⣠⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⡎⠀⠀\n⢠⠇⣠⡂⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠘⡄⠀⠀⡸⠀⠀⠀\n⢸⡀⠛⠄⢀⠀⠀⠀⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⢀⠵⠀⠀⡇⠀⢀⠇⠀⠀⠀\n⠀⢷⡀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⠂⠀⠀⠀⣰⠁⠀⣾⠀⠀⠀⠀\n⠀⠀⠑⢤⣀⠀⠀⢀⣠⠴⠋⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⣀⡴⠁⠀⢠⠃⠀⠀⠀⠀\n⠀⠀⠀⠀⢠⢻⠉⠁⠀⠀⠀⠀⠀⠀⠀⠈⠉⠒⠒⠒⠉⡽⠀⠀⠀⡼⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠸⣾⠀⠐⠀⠀⠀⠀⠀⠑⢤⡀⠀⠀⠀⠀⠀⡇⠀⠀⢠⠇⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⣿⡄⠀⠀⢠⡀⠀⠀⠀⠀⠙⣄⠀⠀⠀⢰⠁⠀⠀⣼⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⢿⣇⠀⠀⢸⠀⠀⠀⠀⠀⠀⠈⠁⠀⢀⡜⠀⠀⠀⡗⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⢸⢸⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠸⣿⡆⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠐⡇⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⣻⠁⠀⠸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⢠⠃⠀⠀⠸⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⡼⠁⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⢠⠏⠀⠀⠀⢸⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⢀⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢦⡀⠀⠀⠀⠀\n\n\n⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠞⠏⣂⣰⡖⣶⣶⣴⠛⡃⠄⠄⠄\n⠄⠄⠄⣀⣀⡀⠤⢤⢤⡦⢣⢞⡏⢻⡇⡻⡇⣿⢊⢸⡄⠄⠄\n⠄⠄⠄⢿⣿⣿⠟⠄⠣⡴⣼⢸⢃⡻⡃⣫⠠⢹⢸⢸⡇⠄⠄\n⠄⠄⠄⠈⠻⣿⣷⣤⡀⠁⣿⠸⠰⠆⡡⣧⣛⡘⣸⢸⡇⠄⠄\n⠄⠄⠄⠄⢸⣮⠻⣿⣿⣶⣍⠳⠜⢿⣟⣉⡿⢃⢻⠘⡄⠄⠄\n⠄⠄⠄⠄⢸⡇⠄⠄⠙⢧⢻⣷⣖⢤⣶⣷⣮⣌⡸⠸⡇⠄⠄\n⠄⠄⠄⠄⢸⡇⠄⠄⠄⢨⣼⣿⣿⢷⣿⣭⣭⣶⡿⢿⡆⠄⠄\n⠄⠄⠄⢀⣿⡇⠄⠄⢠⣿⡿⡛⣿⡎⢫⣾⣿⣿⣷⡌⠃⠄⠄\n⠄⠄⠄⡸⢹⡇⠄⠄⠘⢿⣷⣶⣿⢇⣿⣿⣐⣸⣿⡇⡆⠄⠄\n⠄⠄⠄⡇⠸⡇⠄⠄⢀⣷⣶⣶⣶⣿⣮⣛⣛⢛⣛⡅⡇⠄⠄\n⠄⠄⠄⡇⠄⡇⠄⠄⣼⣿⣿⣿⢿⣿⣿⣿⡟⢸⣿⡇⡇⠄⠄\n⠄⠄⠄⡇⢸⢇⣤⣾⣿⣿⣿⢏⣾⣿⣿⣿⠁⢸⣿⡇⡇⠄⠄\n⠄⠄⣰⣿⣷⠹⣧⣝⡻⣿⣿⣿⣿⣿⡟⠄⠄⡄⣿⡇⣇⠄⠄\n⠄⣸⣿⣿⣿⣧⢹⣿⣿⣷⣮⣭⡭⠬⠅⠄⠠⡇⣿⡇⣿⠄⠄\n⠄⣿⣿⣿⣿⣿⡇⠟⡼⣋⣵⣶⣾⣿⣷⠄⠄⡇⣿⣇⢿⡀⠄\n⠄⣿⣿⣿⣿⣿⣷⠄⠑⣿⣿⣿⣿⣿⣿⣧⠄⡇⢿⣿⣮⣅⠄\n⠄⣿⣿⣿⣿⣿⡏⠄⠄⠘⣿⣿⣿⣿⣿⣿⡆⡇⣷⡆⣭⠒⠄\n⠄⣿⣿⣿⣿⣿⡇⠄⠄⠄⠙⣿⣿⣿⣿⣿⣿⡀⣿⠄⠄⠄⠄\n⠄⢻⣿⣿⣿⣿⠃⠄⠄⠄⠄⠈⢿⣿⣿⣿⣿⣇⣿⡀⠄⠄⠄\n\n\n⠒⠛⠣⠄⢈⣉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⡠⠂⡀⠉⠂⠠⡀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠈⠉⠐⠂⠄⡀⠀⠠⡀⢴⠀⠎⠀⣀⡀⠠⠄⠀⠠⡀⢀⠀⠀⠀\n⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⣻⡛⠚⢶⡴⢋⣿⠗⠐⠒⣈⡦⠚⠁⠀⠀⠀\n⢟⠚⠓⡦⣄⣀⠀⠀⣀⡀⠔⠋⠀⡹⠯⠧⢂⢤⢀⢰⣠⢦⠥⢋⠀⠀⠀⠀⠀⠀\n⣾⣭⣟⣳⣶⠝⠁⠀⠀⠀⠀⠀⢰⠁⠀⣀⣎⣎⠀⡠⠐⠁⠀⠀⠑⠤⢀⣀⣠⣴\n⣄⣙⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⡜⠉⠉⠉⢉⠝⠁⠀⠀⠀⠀⠀⠀⠀⠁⢸⠥⠄\n⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⡠⠈⡐⠉⠉⡕⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀\n⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠁⢰⠀⠀⠜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣏\n⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⣿⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⠝\n⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⡩⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡃⠀\n⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀\n⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀\n⠋⣁⠜⠢⣀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡜⠀⠀⠀\n⠈⠀⠀⢀⣹⠽⠶⠠⠤⡤⠤⣼⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠃⠀⠀⠀\n⠄⠐⠉⠁⠀⢀⡠⢔⡩⠔⠋⠀⣭⣿⣧⣤⣀⣀⣀⣀⣠⣤⣶⣿⣿⠄⠀⠀⠀⠀\n";
    string private constant _symbol = "CUM";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 420699966699 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 69;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x62B2e241136130b594254bfbcF7694ba32f5824e);
    address payable private _marketingAddress = payable(0x62B2e241136130b594254bfbcF7694ba32f5824e);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled =true;

    uint256 public _maxTxAmount = 6310499501 * 10**9;
    uint256 public _maxWalletSize = 6310499501 * 10**9;
    uint256 public _swapTokensAtAmount = 2103499834 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function activateTrading() public onlyOwner {
        tradingOpen = true;
    }

    function clearTheCum() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function clearCumFee() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 cumFeeOnBuy, uint256 cumFeeOnSell) public onlyOwner {

        require((redisFeeOnBuy + cumFeeOnBuy) <= 25);
        require((redisFeeOnSell + cumFeeOnSell) <= 40);
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = cumFeeOnBuy;
        _taxFeeOnSell = cumFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setTreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function enableDisableCaSells(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }


    function setDickSize(uint256 maxWalletSize, uint maxTxAmount) public onlyOwner {
        _maxWalletSize = maxWalletSize * 10**9;
        _maxTxAmount = maxTxAmount * 10**9;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function enableNSFW() public onlyOwner{

        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    } 

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearCumFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearTheCum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"enableDisableCaSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableNSFW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setDickSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"cumFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"cumFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526816ce6286bfb08f6e005f196200001c919062000702565b5f196200002a919062000766565b6006555f60085560146009555f600a556045600b55600a54600c55600b54600d55600c54600e55600d54600f557362b2e241136130b594254bfbcf7694ba32f5824e60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507362b2e241136130b594254bfbcf7694ba32f5824e60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555067579365dc9862820060165567579365dc98628200601755671d3121f446a9c4006018553480156200017d575f80fd5b505f6200018f6200069e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002416200069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000320573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000346919062000805565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000805565b6040518363ffffffff1660e01b8152600401620003f192919062000846565b6020604051808303815f875af11580156200040e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000434919062000805565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000488620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006286200069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6816ce6286bfb08f6e006040516200068f919062000882565b60405180910390a3506200089d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070e82620006cc565b91506200071b83620006cc565b9250826200072e576200072d620006d5565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200077282620006cc565b91506200077f83620006cc565b92508282039050818111156200079a576200079962000739565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007cf82620007a4565b9050919050565b620007e181620007c3565b8114620007ec575f80fd5b50565b5f81519050620007ff81620007d6565b92915050565b5f602082840312156200081d576200081c620007a0565b5b5f6200082c84828501620007ef565b91505092915050565b6200084081620007c3565b82525050565b5f6040820190506200085b5f83018562000835565b6200086a602083018462000835565b9392505050565b6200087c81620006cc565b82525050565b5f602082019050620008975f83018462000871565b92915050565b614fd480620008ab5f395ff3fe6080604052600436106101ba575f3560e01c806383119eb8116100eb578063bfc15d4a11610089578063c6616ba111610063578063c6616ba1146105b7578063dd62ed3e146105df578063e025b6191461061b578063f2fde38b14610643576101c1565b8063bfc15d4a1461053d578063bfd7928414610553578063c492f0461461058f576101c1565b806395d89b41116100c557806395d89b4114610499578063a15743ba146104c3578063a9059cbb146104d9578063bc84a26914610515576101c1565b806383119eb81461041d5780638da5cb5b146104455780638f9a55c01461046f576101c1565b80632fd689e31161015857806370a082311161013257806370a0823114610365578063715018a6146103a15780637d1db4a5146103b75780637f2feddc146103e1576101c1565b80632fd689e3146102e7578063313ce5671461031157806349bd5a5e1461033b576101c1565b80631694505e116101945780631694505e1461024157806318160ddd1461026b5780631a866db31461029557806323b872dd146102ab576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630bd05b691461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961066b565b6040516101e691906128fb565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906129b0565b61068e565b6040516102229190612a08565b60405180910390f35b348015610236575f80fd5b5061023f6106ab565b005b34801561024c575f80fd5b5061025561075c565b6040516102629190612a7c565b60405180910390f35b348015610276575f80fd5b5061027f610781565b60405161028c9190612aa4565b60405180910390f35b3480156102a0575f80fd5b506102a9610791565b005b3480156102b6575f80fd5b506102d160048036038101906102cc9190612abd565b610847565b6040516102de9190612a08565b60405180910390f35b3480156102f2575f80fd5b506102fb61091b565b6040516103089190612aa4565b60405180910390f35b34801561031c575f80fd5b50610325610921565b6040516103329190612b28565b60405180910390f35b348015610346575f80fd5b5061034f610929565b60405161035c9190612b50565b60405180910390f35b348015610370575f80fd5b5061038b60048036038101906103869190612b69565b61094e565b6040516103989190612aa4565b60405180910390f35b3480156103ac575f80fd5b506103b561099c565b005b3480156103c2575f80fd5b506103cb610aea565b6040516103d89190612aa4565b60405180910390f35b3480156103ec575f80fd5b5061040760048036038101906104029190612b69565b610af0565b6040516104149190612aa4565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e9190612b94565b610b05565b005b348015610450575f80fd5b50610459610bc9565b6040516104669190612b50565b60405180910390f35b34801561047a575f80fd5b50610483610bf0565b6040516104909190612aa4565b60405180910390f35b3480156104a4575f80fd5b506104ad610bf6565b6040516104ba91906128fb565b60405180910390f35b3480156104ce575f80fd5b506104d7610c33565b005b3480156104e4575f80fd5b506104ff60048036038101906104fa91906129b0565b610d08565b60405161050c9190612a08565b60405180910390f35b348015610520575f80fd5b5061053b60048036038101906105369190612bd2565b610d25565b005b348015610548575f80fd5b50610551610dc3565b005b34801561055e575f80fd5b5061057960048036038101906105749190612b69565b610e90565b6040516105869190612a08565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c88565b610ead565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612ce5565b610fe2565b005b3480156105ea575f80fd5b5061060560048036038101906106009190612d49565b6110c8565b6040516106129190612aa4565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c9190612d87565b61114a565b005b34801561064e575f80fd5b5061066960048036038101906106649190612b69565b6111fb565b005b606060405180611740016040528061171981526020016138866117199139905090565b5f6106a161069a6113b8565b84846113bf565b6001905092915050565b6106b36113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690612dfc565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6816ce6286bfb08f6e00905090565b6107996113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c90612dfc565b60405180910390fd5b6816ce6286bfb08f6e006016819055506816ce6286bfb08f6e00601781905550565b5f610853848484611582565b6109108461085f6113b8565b61090b8560405180606001604052806028815260200161385e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108c26113b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611de29092919063ffffffff16565b6113bf565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61099560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e44565b9050919050565b6109a46113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790612dfc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b610b0d6113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090612dfc565b60405180910390fd5b633b9aca0082610ba99190612e47565b601781905550633b9aca0081610bbf9190612e47565b6016819055505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f43554d0000000000000000000000000000000000000000000000000000000000815250905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c736113b8565b73ffffffffffffffffffffffffffffffffffffffff161480610ce8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd06113b8565b73ffffffffffffffffffffffffffffffffffffffff16145b610cf0575f80fd5b5f610cfa3061094e565b9050610d0581611eb0565b50565b5f610d1b610d146113b8565b8484611582565b6001905092915050565b610d2d6113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090612dfc565b60405180910390fd5b8060188190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e036113b8565b73ffffffffffffffffffffffffffffffffffffffff161480610e78575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e606113b8565b73ffffffffffffffffffffffffffffffffffffffff16145b610e80575f80fd5b5f479050610e8d81612119565b50565b6010602052805f5260405f205f915054906101000a900460ff1681565b610eb56113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612dfc565b60405180910390fd5b5f5b83839050811015610fdc578160055f868685818110610f6557610f64612e88565b5b9050602002016020810190610f7a9190612b69565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610fd490612eb5565b915050610f43565b50505050565b610fea6113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90612dfc565b60405180910390fd5b601982856110849190612efc565b111561108e575f80fd5b6028818461109c9190612efc565b11156110a6575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111526113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590612dfc565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6112036113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690612dfc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612f9f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114249061302d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611492906130bb565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115759190612aa4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613149565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611655906131d7565b60405180910390fd5b5f81116116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169790613265565b60405180910390fd5b6116a8610bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561171657506116e6610bc9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aef57601560149054906101000a900460ff166117a557611737610bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906132f3565b60405180910390fd5b5b6016548111156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e19061335b565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611888575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be906133e9565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461197357601754816119288461094e565b6119329190612efc565b10611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613477565b60405180910390fd5b5b5f61197d3061094e565b90505f601854821015905060165482106119975760165491505b8080156119af575060158054906101000a900460ff16155b8015611a08575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a205750601560169054906101000a900460ff165b8015611a73575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ac6575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aec57611ad482611eb0565b5f4790505f811115611aea57611ae947612119565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b8f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c4d575f9050611dd0565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cf6575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d0e57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dcf57600a54600c81905550600b54600d819055505b5b611ddc84848484612181565b50505050565b5f838311158290611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2091906128fb565b60405180910390fd5b505f8385611e379190613495565b9050809150509392505050565b5f600654821115611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613538565b60405180910390fd5b5f611e936121ae565b9050611ea881846121d790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ee657611ee5613556565b5b604051908082528060200260200182016040528015611f145781602001602082028036833780820191505090505b50905030815f81518110611f2b57611f2a612e88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff39190613597565b8160018151811061200757612006612e88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206d3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113bf565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120cf9594939291906136b2565b5f604051808303815f87803b1580156120e6575f80fd5b505af11580156120f8573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561217d573d5f803e3d5ffd5b5050565b8061218f5761218e612220565b5b61219a848484612259565b806121a8576121a7612419565b5b50505050565b5f805f6121b961242d565b915091506121d081836121d790919063ffffffff16565b9250505090565b5f61221883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061248c565b905092915050565b5f600c5414801561223257505f600d54145b61225757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612268876124ed565b9550955095509550955095506122c48660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123558560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061239f816125f3565b6123a984836126aa565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124069190612aa4565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6816ce6286bfb08f6e0090506124606816ce6286bfb08f6e006006546121d790919063ffffffff16565b82101561247f576006546816ce6286bfb08f6e00935093505050612488565b81819350935050505b9091565b5f80831182906124d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c991906128fb565b60405180910390fd5b505f83856124e09190613737565b9050809150509392505050565b5f805f805f805f805f6125058a600c54600d546126e4565b9250925092505f6125146121ae565b90505f805f6125258e878787612776565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61258e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611de2565b905092915050565b5f8082846125a49190612efc565b9050838110156125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e0906137b1565b60405180910390fd5b8091505092915050565b5f6125fc6121ae565b90505f61261282846127fa90919063ffffffff16565b90506126648160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6126bf8260065461254d90919063ffffffff16565b6006819055506126da8160075461259690919063ffffffff16565b6007819055505050565b5f805f8061270e6064612700888a6127fa90919063ffffffff16565b6121d790919063ffffffff16565b90505f6127376064612729888b6127fa90919063ffffffff16565b6121d790919063ffffffff16565b90505f61275f82612751858c61254d90919063ffffffff16565b61254d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061278d85896127fa90919063ffffffff16565b90505f6127a386896127fa90919063ffffffff16565b90505f6127b987896127fa90919063ffffffff16565b90505f6127e1826127d3858761254d90919063ffffffff16565b61254d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361280a575f905061286b565b5f82846128179190612e47565b90508284826128269190613737565b14612866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285d9061383f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128a857808201518184015260208101905061288d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128cd82612871565b6128d7818561287b565b93506128e781856020860161288b565b6128f0816128b3565b840191505092915050565b5f6020820190508181035f83015261291381846128c3565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294c82612923565b9050919050565b61295c81612942565b8114612966575f80fd5b50565b5f8135905061297781612953565b92915050565b5f819050919050565b61298f8161297d565b8114612999575f80fd5b50565b5f813590506129aa81612986565b92915050565b5f80604083850312156129c6576129c561291b565b5b5f6129d385828601612969565b92505060206129e48582860161299c565b9150509250929050565b5f8115159050919050565b612a02816129ee565b82525050565b5f602082019050612a1b5f8301846129f9565b92915050565b5f819050919050565b5f612a44612a3f612a3a84612923565b612a21565b612923565b9050919050565b5f612a5582612a2a565b9050919050565b5f612a6682612a4b565b9050919050565b612a7681612a5c565b82525050565b5f602082019050612a8f5f830184612a6d565b92915050565b612a9e8161297d565b82525050565b5f602082019050612ab75f830184612a95565b92915050565b5f805f60608486031215612ad457612ad361291b565b5b5f612ae186828701612969565b9350506020612af286828701612969565b9250506040612b038682870161299c565b9150509250925092565b5f60ff82169050919050565b612b2281612b0d565b82525050565b5f602082019050612b3b5f830184612b19565b92915050565b612b4a81612942565b82525050565b5f602082019050612b635f830184612b41565b92915050565b5f60208284031215612b7e57612b7d61291b565b5b5f612b8b84828501612969565b91505092915050565b5f8060408385031215612baa57612ba961291b565b5b5f612bb78582860161299c565b9250506020612bc88582860161299c565b9150509250929050565b5f60208284031215612be757612be661291b565b5b5f612bf48482850161299c565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c1e57612c1d612bfd565b5b8235905067ffffffffffffffff811115612c3b57612c3a612c01565b5b602083019150836020820283011115612c5757612c56612c05565b5b9250929050565b612c67816129ee565b8114612c71575f80fd5b50565b5f81359050612c8281612c5e565b92915050565b5f805f60408486031215612c9f57612c9e61291b565b5b5f84013567ffffffffffffffff811115612cbc57612cbb61291f565b5b612cc886828701612c09565b93509350506020612cdb86828701612c74565b9150509250925092565b5f805f8060808587031215612cfd57612cfc61291b565b5b5f612d0a8782880161299c565b9450506020612d1b8782880161299c565b9350506040612d2c8782880161299c565b9250506060612d3d8782880161299c565b91505092959194509250565b5f8060408385031215612d5f57612d5e61291b565b5b5f612d6c85828601612969565b9250506020612d7d85828601612969565b9150509250929050565b5f60208284031215612d9c57612d9b61291b565b5b5f612da984828501612c74565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612de660208361287b565b9150612df182612db2565b602082019050919050565b5f6020820190508181035f830152612e1381612dda565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e518261297d565b9150612e5c8361297d565b9250828202612e6a8161297d565b91508282048414831517612e8157612e80612e1a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612ebf8261297d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ef157612ef0612e1a565b5b600182019050919050565b5f612f068261297d565b9150612f118361297d565b9250828201905080821115612f2957612f28612e1a565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f8960268361287b565b9150612f9482612f2f565b604082019050919050565b5f6020820190508181035f830152612fb681612f7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61301760248361287b565b915061302282612fbd565b604082019050919050565b5f6020820190508181035f8301526130448161300b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130a560228361287b565b91506130b08261304b565b604082019050919050565b5f6020820190508181035f8301526130d281613099565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61313360258361287b565b915061313e826130d9565b604082019050919050565b5f6020820190508181035f83015261316081613127565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c160238361287b565b91506131cc82613167565b604082019050919050565b5f6020820190508181035f8301526131ee816131b5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61324f60298361287b565b915061325a826131f5565b604082019050919050565b5f6020820190508181035f83015261327c81613243565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6132dd603f8361287b565b91506132e882613283565b604082019050919050565b5f6020820190508181035f83015261330a816132d1565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613345601c8361287b565b915061335082613311565b602082019050919050565b5f6020820190508181035f83015261337281613339565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133d360238361287b565b91506133de82613379565b604082019050919050565b5f6020820190508181035f830152613400816133c7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61346160238361287b565b915061346c82613407565b604082019050919050565b5f6020820190508181035f83015261348e81613455565b9050919050565b5f61349f8261297d565b91506134aa8361297d565b92508282039050818111156134c2576134c1612e1a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613522602a8361287b565b915061352d826134c8565b604082019050919050565b5f6020820190508181035f83015261354f81613516565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061359181612953565b92915050565b5f602082840312156135ac576135ab61291b565b5b5f6135b984828501613583565b91505092915050565b5f819050919050565b5f6135e56135e06135db846135c2565b612a21565b61297d565b9050919050565b6135f5816135cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61362d81612942565b82525050565b5f61363e8383613624565b60208301905092915050565b5f602082019050919050565b5f613660826135fb565b61366a8185613605565b935061367583613615565b805f5b838110156136a557815161368c8882613633565b97506136978361364a565b925050600181019050613678565b5085935050505092915050565b5f60a0820190506136c55f830188612a95565b6136d260208301876135ec565b81810360408301526136e48186613656565b90506136f36060830185612b41565b6137006080830184612a95565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137418261297d565b915061374c8361297d565b92508261375c5761375b61370a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61379b601b8361287b565b91506137a682613767565b602082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61382960218361287b565b9150613834826137cf565b604082019050919050565b5f6020820190508181035f8301526138568161381d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636543554d20696e206d652053656e7061690a0ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a380e2a380e2a3a4e2a0a4e2a384e2a380e2a380e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a380e2a0b4e2a09ae2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a0b3e2a2a4e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a3a0e2a09ae2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a091e2a386e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a280e2a19ee2a1a5e2a080e2a080e2a080e2a080e2a3a0e2a0b4e2a280e2a3a0e2a0a4e2a2a6e2a180e2a080e2a080e2a080e2a080e2a080e2a088e2a386e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a2a0e2a19ee2a2b8e2a081e2a080e2a080e2a3a0e2a29ae2a1a5e2a09ae2a089e2a080e2a080e2a098e2a397e2a184e2a080e2a080e2a2b0e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a2bee2a087e2a18ee2a080e2a080e2a3b0e2a1b3e2a08be2a080e2a080e2a3a0e2a3a4e2a0b6e2a0a2e2a1bfe2a3b8e2a386e2a080e2a088e2a3a7e2a384e2a2b8e2a081e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a2b8e2a184e2a2b3e2a3a0e2a3bee2a19fe2a093e2a086e2a080e2a098e2a099e2a280e2a3a4e2a3b6e2a2bfe2a3a4e2a3b9e2a185e2a080e2a3bfe2a088e2a3bfe2a187e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a187e2a0b8e2a187e2a3bee2a19be2a3b6e2a1a6e2a080e2a080e2a080e2a09be2a2b1e2a2bce2a3b7e2a0b8e2a08be2a2a3e2a080e2a187e2a3b9e2a09be2a187e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a2b1e2a080e2a0b9e2a38fe2a089e2a29fe2a3bbe2a380e2a080e2a080e2a080e2a090e2a09be2a09be2a090e2a080e2a098e2a3b4e2a1bde2a387e2a080e2a2b8e2a180e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a088e2a287e2a080e2a098e2a184e2a080e2a080e2a2b8e2a181e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a3bfe2a280e2a2b9e2a180e2a088e2a3a7e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a088e2a2a6e2a080e2a2bbe2a2a6e2a180e2a088e2a0b0e2a0b6e2a092e2a082e2a080e2a080e2a280e2a1a4e2a080e2a187e2a298e2a186e2a287e2a080e2a0b8e2a3b7e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a0b3e2a1bce2a180e2a39fe2a1b6e2a284e2a180e2a080e2a280e2a1a0e2a096e2a081e2a080e2a280e2a187e2a2b8e2a2bbe2a0b8e2a180e2a080e2a3bfe2a287e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a2a0e2a08fe2a2b3e2a09fe2a280e2a0b7e2a088e2a3b9e2a187e2a080e2a080e2a080e2a080e2a3bce2a2a3e2a19ee2a2b8e2a080e2a187e2a2b0e2a3bce2a2b8e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a280e2a08ee2a3a0e2a08be2a280e2a1bce2a09fe2a08ae2a09fe2a080e2a080e2a080e2a080e2a080e2a3bfe2a080e2a091e2a2afe2a380e2a387e2a38ee2a28fe2a19ee2a080e2a080e2a0800ae2a080e2a080e2a080e2a280e2a1a0e2a0bee2a094e2a093e2a29ee2a381e2a380e2a380e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2bbe2a380e2a380e2a380e2a188e2a09be2a0bfe2a0afe2a380e2a080e2a080e2a0800ae2a080e2a080e2a2a0e2a08be2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a089e2a081e2a090e2a089e2a089e2a089e2a089e2a089e2a3a7e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a091e2a184e2a0800ae2a080e2a080e2a2bbe2a080e2a080e2a080e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a099e2a0a7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b9e2a1860ae2a080e2a080e2a2b8e2a080e2a080e2a1bce2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a3a4e2a080e2a080e2a080e2a080e2a080e2a080e2a1bce2a0830ae2a080e2a080e2a098e2a1a4e2a08ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b9e2a180e2a080e2a080e2a080e2a080e2a2a0e2a087e2a0800ae2a080e2a3a0e2a08ee2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a3e2a080e2a080e2a080e2a080e2a18ee2a080e2a0800ae2a2a0e2a087e2a3a0e2a182e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a080e2a080e2a098e2a184e2a080e2a080e2a1b8e2a080e2a080e2a0800ae2a2b8e2a180e2a09be2a084e2a280e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a3b8e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a0b5e2a080e2a080e2a187e2a080e2a280e2a087e2a080e2a080e2a0800ae2a080e2a2b7e2a180e2a080e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b8e2a180e2a080e2a080e2a080e2a080e2a080e2a082e2a080e2a080e2a080e2a3b0e2a081e2a080e2a3bee2a080e2a080e2a080e2a0800ae2a080e2a080e2a091e2a2a4e2a380e2a080e2a080e2a280e2a3a0e2a0b4e2a08be2a080e2a080e2a099e2a2a6e2a180e2a080e2a080e2a080e2a080e2a080e2a380e2a1b4e2a081e2a080e2a2a0e2a083e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a2a0e2a2bbe2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a092e2a092e2a092e2a089e2a1bde2a080e2a080e2a080e2a1bce2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a0b8e2a3bee2a080e2a090e2a080e2a080e2a080e2a080e2a080e2a091e2a2a4e2a180e2a080e2a080e2a080e2a080e2a080e2a187e2a080e2a080e2a2a0e2a087e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a3bfe2a184e2a080e2a080e2a2a0e2a180e2a080e2a080e2a080e2a080e2a099e2a384e2a080e2a080e2a080e2a2b0e2a081e2a080e2a080e2a3bce2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a2bfe2a387e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a081e2a080e2a280e2a19ce2a080e2a080e2a080e2a197e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a2b8e2a2b8e2a080e2a080e2a2b8e2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a0e2a187e2a080e2a080e2a080e2a187e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a0b8e2a3bfe2a186e2a080e2a2b8e2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a090e2a187e2a080e2a080e2a2b0e2a083e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a3bbe2a081e2a080e2a0b8e2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a3e2a080e2a080e2a19ee2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a2a0e2a083e2a080e2a080e2a0b8e2a2b3e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b3e2a1bce2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a2a0e2a08fe2a080e2a080e2a080e2a2b8e2a3bfe2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a0a2e2a180e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a280e2a18ee2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a098e2a2a6e2a180e2a080e2a080e2a080e2a0800a0a0ae2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a09ee2a08fe2a382e2a3b0e2a196e2a3b6e2a3b6e2a3b4e2a09be2a183e2a084e2a084e2a0840ae2a084e2a084e2a084e2a380e2a380e2a180e2a0a4e2a2a4e2a2a4e2a1a6e2a2a3e2a29ee2a18fe2a2bbe2a187e2a1bbe2a187e2a3bfe2a28ae2a2b8e2a184e2a084e2a0840ae2a084e2a084e2a084e2a2bfe2a3bfe2a3bfe2a09fe2a084e2a0a3e2a1b4e2a3bce2a2b8e2a283e2a1bbe2a183e2a3abe2a0a0e2a2b9e2a2b8e2a2b8e2a187e2a084e2a0840ae2a084e2a084e2a084e2a088e2a0bbe2a3bfe2a3b7e2a3a4e2a180e2a081e2a3bfe2a0b8e2a0b0e2a086e2a1a1e2a3a7e2a39be2a198e2a3b8e2a2b8e2a187e2a084e2a0840ae2a084e2a084e2a084e2a084e2a2b8e2a3aee2a0bbe2a3bfe2a3bfe2a3b6e2a38de2a0b3e2a09ce2a2bfe2a39fe2a389e2a1bfe2a283e2a2bbe2a098e2a184e2a084e2a0840ae2a084e2a084e2a084e2a084e2a2b8e2a187e2a084e2a084e2a099e2a2a7e2a2bbe2a3b7e2a396e2a2a4e2a3b6e2a3b7e2a3aee2a38ce2a1b8e2a0b8e2a187e2a084e2a0840ae2a084e2a084e2a084e2a084e2a2b8e2a187e2a084e2a084e2a084e2a2a8e2a3bce2a3bfe2a3bfe2a2b7e2a3bfe2a3ade2a3ade2a3b6e2a1bfe2a2bfe2a186e2a084e2a0840ae2a084e2a084e2a084e2a280e2a3bfe2a187e2a084e2a084e2a2a0e2a3bfe2a1bfe2a19be2a3bfe2a18ee2a2abe2a3bee2a3bfe2a3bfe2a3b7e2a18ce2a083e2a084e2a0840ae2a084e2a084e2a084e2a1b8e2a2b9e2a187e2a084e2a084e2a098e2a2bfe2a3b7e2a3b6e2a3bfe2a287e2a3bfe2a3bfe2a390e2a3b8e2a3bfe2a187e2a186e2a084e2a0840ae2a084e2a084e2a084e2a187e2a0b8e2a187e2a084e2a084e2a280e2a3b7e2a3b6e2a3b6e2a3b6e2a3bfe2a3aee2a39be2a39be2a29be2a39be2a185e2a187e2a084e2a0840ae2a084e2a084e2a084e2a187e2a084e2a187e2a084e2a084e2a3bce2a3bfe2a3bfe2a3bfe2a2bfe2a3bfe2a3bfe2a3bfe2a19fe2a2b8e2a3bfe2a187e2a187e2a084e2a0840ae2a084e2a084e2a084e2a187e2a2b8e2a287e2a3a4e2a3bee2a3bfe2a3bfe2a3bfe2a28fe2a3bee2a3bfe2a3bfe2a3bfe2a081e2a2b8e2a3bfe2a187e2a187e2a084e2a0840ae2a084e2a084e2a3b0e2a3bfe2a3b7e2a0b9e2a3a7e2a39de2a1bbe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a19fe2a084e2a084e2a184e2a3bfe2a187e2a387e2a084e2a0840ae2a084e2a3b8e2a3bfe2a3bfe2a3bfe2a3a7e2a2b9e2a3bfe2a3bfe2a3b7e2a3aee2a3ade2a1ade2a0ace2a085e2a084e2a0a0e2a187e2a3bfe2a187e2a3bfe2a084e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a187e2a09fe2a1bce2a38be2a3b5e2a3b6e2a3bee2a3bfe2a3b7e2a084e2a084e2a187e2a3bfe2a387e2a2bfe2a180e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3b7e2a084e2a091e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3a7e2a084e2a187e2a2bfe2a3bfe2a3aee2a385e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a18fe2a084e2a084e2a098e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a186e2a187e2a3b7e2a186e2a3ade2a092e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a187e2a084e2a084e2a084e2a099e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a180e2a3bfe2a084e2a084e2a084e2a0840ae2a084e2a2bbe2a3bfe2a3bfe2a3bfe2a3bfe2a083e2a084e2a084e2a084e2a084e2a088e2a2bfe2a3bfe2a3bfe2a3bfe2a3bfe2a387e2a3bfe2a180e2a084e2a084e2a0840a0a0ae2a092e2a09be2a0a3e2a084e2a288e2a389e2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a082e2a180e2a089e2a082e2a0a0e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a090e2a082e2a084e2a180e2a080e2a0a0e2a180e2a2b4e2a080e2a08ee2a080e2a380e2a180e2a0a0e2a084e2a080e2a0a0e2a180e2a280e2a080e2a080e2a0800ae2a0a4e2a380e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a091e2a3bbe2a19be2a09ae2a2b6e2a1b4e2a28be2a3bfe2a097e2a090e2a092e2a388e2a1a6e2a09ae2a081e2a080e2a080e2a0800ae2a29fe2a09ae2a093e2a1a6e2a384e2a380e2a080e2a080e2a380e2a180e2a094e2a08be2a080e2a1b9e2a0afe2a0a7e2a282e2a2a4e2a280e2a2b0e2a3a0e2a2a6e2a0a5e2a28be2a080e2a080e2a080e2a080e2a080e2a0800ae2a3bee2a3ade2a39fe2a3b3e2a3b6e2a09de2a081e2a080e2a080e2a080e2a080e2a080e2a2b0e2a081e2a080e2a380e2a38ee2a38ee2a080e2a1a0e2a090e2a081e2a080e2a080e2a091e2a0a4e2a280e2a380e2a3a0e2a3b40ae2a384e2a399e2a3bfe2a09fe2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a19ce2a089e2a089e2a089e2a289e2a09de2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a081e2a2b8e2a0a5e2a0840ae2a3bfe2a1bfe2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a088e2a190e2a089e2a089e2a195e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a186e2a0800ae2a3bfe2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a081e2a2b0e2a080e2a080e2a09ce2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a3bfe2a38f0ae2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a287e2a3bfe2a1a0e2a08ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a188e2a09d0ae2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a8e2a1a9e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a183e2a0800ae2a3bfe2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b0e2a083e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a080e2a0800ae2a3bfe2a3bfe2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a18ee2a080e2a0800ae2a08be2a381e2a09ce2a0a2e2a380e2a080e2a080e2a080e2a080e2a080e2a098e2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a19ce2a080e2a080e2a0800ae2a088e2a080e2a080e2a280e2a3b9e2a0bde2a0b6e2a0a0e2a0a4e2a1a4e2a0a4e2a3bce2a3a6e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a3b4e2a1bfe2a083e2a080e2a080e2a0800ae2a084e2a090e2a089e2a081e2a080e2a280e2a1a0e2a294e2a1a9e2a094e2a08be2a080e2a3ade2a3bfe2a3a7e2a3a4e2a380e2a380e2a380e2a380e2a3a0e2a3a4e2a3b6e2a3bfe2a3bfe2a084e2a080e2a080e2a080e2a0800aa26469706673582212204b40216dc7947a6c5488c2aea119a50f3370d8e311e86a465e1e2fd5744c93b364736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c806383119eb8116100eb578063bfc15d4a11610089578063c6616ba111610063578063c6616ba1146105b7578063dd62ed3e146105df578063e025b6191461061b578063f2fde38b14610643576101c1565b8063bfc15d4a1461053d578063bfd7928414610553578063c492f0461461058f576101c1565b806395d89b41116100c557806395d89b4114610499578063a15743ba146104c3578063a9059cbb146104d9578063bc84a26914610515576101c1565b806383119eb81461041d5780638da5cb5b146104455780638f9a55c01461046f576101c1565b80632fd689e31161015857806370a082311161013257806370a0823114610365578063715018a6146103a15780637d1db4a5146103b75780637f2feddc146103e1576101c1565b80632fd689e3146102e7578063313ce5671461031157806349bd5a5e1461033b576101c1565b80631694505e116101945780631694505e1461024157806318160ddd1461026b5780631a866db31461029557806323b872dd146102ab576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630bd05b691461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961066b565b6040516101e691906128fb565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906129b0565b61068e565b6040516102229190612a08565b60405180910390f35b348015610236575f80fd5b5061023f6106ab565b005b34801561024c575f80fd5b5061025561075c565b6040516102629190612a7c565b60405180910390f35b348015610276575f80fd5b5061027f610781565b60405161028c9190612aa4565b60405180910390f35b3480156102a0575f80fd5b506102a9610791565b005b3480156102b6575f80fd5b506102d160048036038101906102cc9190612abd565b610847565b6040516102de9190612a08565b60405180910390f35b3480156102f2575f80fd5b506102fb61091b565b6040516103089190612aa4565b60405180910390f35b34801561031c575f80fd5b50610325610921565b6040516103329190612b28565b60405180910390f35b348015610346575f80fd5b5061034f610929565b60405161035c9190612b50565b60405180910390f35b348015610370575f80fd5b5061038b60048036038101906103869190612b69565b61094e565b6040516103989190612aa4565b60405180910390f35b3480156103ac575f80fd5b506103b561099c565b005b3480156103c2575f80fd5b506103cb610aea565b6040516103d89190612aa4565b60405180910390f35b3480156103ec575f80fd5b5061040760048036038101906104029190612b69565b610af0565b6040516104149190612aa4565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e9190612b94565b610b05565b005b348015610450575f80fd5b50610459610bc9565b6040516104669190612b50565b60405180910390f35b34801561047a575f80fd5b50610483610bf0565b6040516104909190612aa4565b60405180910390f35b3480156104a4575f80fd5b506104ad610bf6565b6040516104ba91906128fb565b60405180910390f35b3480156104ce575f80fd5b506104d7610c33565b005b3480156104e4575f80fd5b506104ff60048036038101906104fa91906129b0565b610d08565b60405161050c9190612a08565b60405180910390f35b348015610520575f80fd5b5061053b60048036038101906105369190612bd2565b610d25565b005b348015610548575f80fd5b50610551610dc3565b005b34801561055e575f80fd5b5061057960048036038101906105749190612b69565b610e90565b6040516105869190612a08565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c88565b610ead565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612ce5565b610fe2565b005b3480156105ea575f80fd5b5061060560048036038101906106009190612d49565b6110c8565b6040516106129190612aa4565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c9190612d87565b61114a565b005b34801561064e575f80fd5b5061066960048036038101906106649190612b69565b6111fb565b005b606060405180611740016040528061171981526020016138866117199139905090565b5f6106a161069a6113b8565b84846113bf565b6001905092915050565b6106b36113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690612dfc565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6816ce6286bfb08f6e00905090565b6107996113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c90612dfc565b60405180910390fd5b6816ce6286bfb08f6e006016819055506816ce6286bfb08f6e00601781905550565b5f610853848484611582565b6109108461085f6113b8565b61090b8560405180606001604052806028815260200161385e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108c26113b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611de29092919063ffffffff16565b6113bf565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61099560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e44565b9050919050565b6109a46113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790612dfc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b610b0d6113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090612dfc565b60405180910390fd5b633b9aca0082610ba99190612e47565b601781905550633b9aca0081610bbf9190612e47565b6016819055505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f43554d0000000000000000000000000000000000000000000000000000000000815250905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c736113b8565b73ffffffffffffffffffffffffffffffffffffffff161480610ce8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd06113b8565b73ffffffffffffffffffffffffffffffffffffffff16145b610cf0575f80fd5b5f610cfa3061094e565b9050610d0581611eb0565b50565b5f610d1b610d146113b8565b8484611582565b6001905092915050565b610d2d6113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090612dfc565b60405180910390fd5b8060188190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e036113b8565b73ffffffffffffffffffffffffffffffffffffffff161480610e78575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e606113b8565b73ffffffffffffffffffffffffffffffffffffffff16145b610e80575f80fd5b5f479050610e8d81612119565b50565b6010602052805f5260405f205f915054906101000a900460ff1681565b610eb56113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612dfc565b60405180910390fd5b5f5b83839050811015610fdc578160055f868685818110610f6557610f64612e88565b5b9050602002016020810190610f7a9190612b69565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610fd490612eb5565b915050610f43565b50505050565b610fea6113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90612dfc565b60405180910390fd5b601982856110849190612efc565b111561108e575f80fd5b6028818461109c9190612efc565b11156110a6575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111526113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590612dfc565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6112036113b8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690612dfc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612f9f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114249061302d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611492906130bb565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115759190612aa4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613149565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611655906131d7565b60405180910390fd5b5f81116116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169790613265565b60405180910390fd5b6116a8610bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561171657506116e6610bc9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aef57601560149054906101000a900460ff166117a557611737610bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906132f3565b60405180910390fd5b5b6016548111156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e19061335b565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611888575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be906133e9565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461197357601754816119288461094e565b6119329190612efc565b10611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613477565b60405180910390fd5b5b5f61197d3061094e565b90505f601854821015905060165482106119975760165491505b8080156119af575060158054906101000a900460ff16155b8015611a08575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a205750601560169054906101000a900460ff165b8015611a73575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ac6575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aec57611ad482611eb0565b5f4790505f811115611aea57611ae947612119565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b8f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c4d575f9050611dd0565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cf6575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d0e57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dcf57600a54600c81905550600b54600d819055505b5b611ddc84848484612181565b50505050565b5f838311158290611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2091906128fb565b60405180910390fd5b505f8385611e379190613495565b9050809150509392505050565b5f600654821115611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613538565b60405180910390fd5b5f611e936121ae565b9050611ea881846121d790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ee657611ee5613556565b5b604051908082528060200260200182016040528015611f145781602001602082028036833780820191505090505b50905030815f81518110611f2b57611f2a612e88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff39190613597565b8160018151811061200757612006612e88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206d3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113bf565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120cf9594939291906136b2565b5f604051808303815f87803b1580156120e6575f80fd5b505af11580156120f8573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561217d573d5f803e3d5ffd5b5050565b8061218f5761218e612220565b5b61219a848484612259565b806121a8576121a7612419565b5b50505050565b5f805f6121b961242d565b915091506121d081836121d790919063ffffffff16565b9250505090565b5f61221883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061248c565b905092915050565b5f600c5414801561223257505f600d54145b61225757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612268876124ed565b9550955095509550955095506122c48660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123558560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061239f816125f3565b6123a984836126aa565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124069190612aa4565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6816ce6286bfb08f6e0090506124606816ce6286bfb08f6e006006546121d790919063ffffffff16565b82101561247f576006546816ce6286bfb08f6e00935093505050612488565b81819350935050505b9091565b5f80831182906124d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c991906128fb565b60405180910390fd5b505f83856124e09190613737565b9050809150509392505050565b5f805f805f805f805f6125058a600c54600d546126e4565b9250925092505f6125146121ae565b90505f805f6125258e878787612776565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61258e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611de2565b905092915050565b5f8082846125a49190612efc565b9050838110156125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e0906137b1565b60405180910390fd5b8091505092915050565b5f6125fc6121ae565b90505f61261282846127fa90919063ffffffff16565b90506126648160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6126bf8260065461254d90919063ffffffff16565b6006819055506126da8160075461259690919063ffffffff16565b6007819055505050565b5f805f8061270e6064612700888a6127fa90919063ffffffff16565b6121d790919063ffffffff16565b90505f6127376064612729888b6127fa90919063ffffffff16565b6121d790919063ffffffff16565b90505f61275f82612751858c61254d90919063ffffffff16565b61254d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061278d85896127fa90919063ffffffff16565b90505f6127a386896127fa90919063ffffffff16565b90505f6127b987896127fa90919063ffffffff16565b90505f6127e1826127d3858761254d90919063ffffffff16565b61254d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361280a575f905061286b565b5f82846128179190612e47565b90508284826128269190613737565b14612866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285d9061383f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128a857808201518184015260208101905061288d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128cd82612871565b6128d7818561287b565b93506128e781856020860161288b565b6128f0816128b3565b840191505092915050565b5f6020820190508181035f83015261291381846128c3565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294c82612923565b9050919050565b61295c81612942565b8114612966575f80fd5b50565b5f8135905061297781612953565b92915050565b5f819050919050565b61298f8161297d565b8114612999575f80fd5b50565b5f813590506129aa81612986565b92915050565b5f80604083850312156129c6576129c561291b565b5b5f6129d385828601612969565b92505060206129e48582860161299c565b9150509250929050565b5f8115159050919050565b612a02816129ee565b82525050565b5f602082019050612a1b5f8301846129f9565b92915050565b5f819050919050565b5f612a44612a3f612a3a84612923565b612a21565b612923565b9050919050565b5f612a5582612a2a565b9050919050565b5f612a6682612a4b565b9050919050565b612a7681612a5c565b82525050565b5f602082019050612a8f5f830184612a6d565b92915050565b612a9e8161297d565b82525050565b5f602082019050612ab75f830184612a95565b92915050565b5f805f60608486031215612ad457612ad361291b565b5b5f612ae186828701612969565b9350506020612af286828701612969565b9250506040612b038682870161299c565b9150509250925092565b5f60ff82169050919050565b612b2281612b0d565b82525050565b5f602082019050612b3b5f830184612b19565b92915050565b612b4a81612942565b82525050565b5f602082019050612b635f830184612b41565b92915050565b5f60208284031215612b7e57612b7d61291b565b5b5f612b8b84828501612969565b91505092915050565b5f8060408385031215612baa57612ba961291b565b5b5f612bb78582860161299c565b9250506020612bc88582860161299c565b9150509250929050565b5f60208284031215612be757612be661291b565b5b5f612bf48482850161299c565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c1e57612c1d612bfd565b5b8235905067ffffffffffffffff811115612c3b57612c3a612c01565b5b602083019150836020820283011115612c5757612c56612c05565b5b9250929050565b612c67816129ee565b8114612c71575f80fd5b50565b5f81359050612c8281612c5e565b92915050565b5f805f60408486031215612c9f57612c9e61291b565b5b5f84013567ffffffffffffffff811115612cbc57612cbb61291f565b5b612cc886828701612c09565b93509350506020612cdb86828701612c74565b9150509250925092565b5f805f8060808587031215612cfd57612cfc61291b565b5b5f612d0a8782880161299c565b9450506020612d1b8782880161299c565b9350506040612d2c8782880161299c565b9250506060612d3d8782880161299c565b91505092959194509250565b5f8060408385031215612d5f57612d5e61291b565b5b5f612d6c85828601612969565b9250506020612d7d85828601612969565b9150509250929050565b5f60208284031215612d9c57612d9b61291b565b5b5f612da984828501612c74565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612de660208361287b565b9150612df182612db2565b602082019050919050565b5f6020820190508181035f830152612e1381612dda565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e518261297d565b9150612e5c8361297d565b9250828202612e6a8161297d565b91508282048414831517612e8157612e80612e1a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612ebf8261297d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ef157612ef0612e1a565b5b600182019050919050565b5f612f068261297d565b9150612f118361297d565b9250828201905080821115612f2957612f28612e1a565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f8960268361287b565b9150612f9482612f2f565b604082019050919050565b5f6020820190508181035f830152612fb681612f7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61301760248361287b565b915061302282612fbd565b604082019050919050565b5f6020820190508181035f8301526130448161300b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130a560228361287b565b91506130b08261304b565b604082019050919050565b5f6020820190508181035f8301526130d281613099565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61313360258361287b565b915061313e826130d9565b604082019050919050565b5f6020820190508181035f83015261316081613127565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c160238361287b565b91506131cc82613167565b604082019050919050565b5f6020820190508181035f8301526131ee816131b5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61324f60298361287b565b915061325a826131f5565b604082019050919050565b5f6020820190508181035f83015261327c81613243565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6132dd603f8361287b565b91506132e882613283565b604082019050919050565b5f6020820190508181035f83015261330a816132d1565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613345601c8361287b565b915061335082613311565b602082019050919050565b5f6020820190508181035f83015261337281613339565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133d360238361287b565b91506133de82613379565b604082019050919050565b5f6020820190508181035f830152613400816133c7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61346160238361287b565b915061346c82613407565b604082019050919050565b5f6020820190508181035f83015261348e81613455565b9050919050565b5f61349f8261297d565b91506134aa8361297d565b92508282039050818111156134c2576134c1612e1a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613522602a8361287b565b915061352d826134c8565b604082019050919050565b5f6020820190508181035f83015261354f81613516565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061359181612953565b92915050565b5f602082840312156135ac576135ab61291b565b5b5f6135b984828501613583565b91505092915050565b5f819050919050565b5f6135e56135e06135db846135c2565b612a21565b61297d565b9050919050565b6135f5816135cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61362d81612942565b82525050565b5f61363e8383613624565b60208301905092915050565b5f602082019050919050565b5f613660826135fb565b61366a8185613605565b935061367583613615565b805f5b838110156136a557815161368c8882613633565b97506136978361364a565b925050600181019050613678565b5085935050505092915050565b5f60a0820190506136c55f830188612a95565b6136d260208301876135ec565b81810360408301526136e48186613656565b90506136f36060830185612b41565b6137006080830184612a95565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137418261297d565b915061374c8361297d565b92508261375c5761375b61370a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61379b601b8361287b565b91506137a682613767565b602082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61382960218361287b565b9150613834826137cf565b604082019050919050565b5f6020820190508181035f8301526138568161381d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636543554d20696e206d652053656e7061690a0ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a380e2a380e2a3a4e2a0a4e2a384e2a380e2a380e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a380e2a0b4e2a09ae2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a0b3e2a2a4e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a3a0e2a09ae2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a091e2a386e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a280e2a19ee2a1a5e2a080e2a080e2a080e2a080e2a3a0e2a0b4e2a280e2a3a0e2a0a4e2a2a6e2a180e2a080e2a080e2a080e2a080e2a080e2a088e2a386e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a2a0e2a19ee2a2b8e2a081e2a080e2a080e2a3a0e2a29ae2a1a5e2a09ae2a089e2a080e2a080e2a098e2a397e2a184e2a080e2a080e2a2b0e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a2bee2a087e2a18ee2a080e2a080e2a3b0e2a1b3e2a08be2a080e2a080e2a3a0e2a3a4e2a0b6e2a0a2e2a1bfe2a3b8e2a386e2a080e2a088e2a3a7e2a384e2a2b8e2a081e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a2b8e2a184e2a2b3e2a3a0e2a3bee2a19fe2a093e2a086e2a080e2a098e2a099e2a280e2a3a4e2a3b6e2a2bfe2a3a4e2a3b9e2a185e2a080e2a3bfe2a088e2a3bfe2a187e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a187e2a0b8e2a187e2a3bee2a19be2a3b6e2a1a6e2a080e2a080e2a080e2a09be2a2b1e2a2bce2a3b7e2a0b8e2a08be2a2a3e2a080e2a187e2a3b9e2a09be2a187e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a2b1e2a080e2a0b9e2a38fe2a089e2a29fe2a3bbe2a380e2a080e2a080e2a080e2a090e2a09be2a09be2a090e2a080e2a098e2a3b4e2a1bde2a387e2a080e2a2b8e2a180e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a088e2a287e2a080e2a098e2a184e2a080e2a080e2a2b8e2a181e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a3bfe2a280e2a2b9e2a180e2a088e2a3a7e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a088e2a2a6e2a080e2a2bbe2a2a6e2a180e2a088e2a0b0e2a0b6e2a092e2a082e2a080e2a080e2a280e2a1a4e2a080e2a187e2a298e2a186e2a287e2a080e2a0b8e2a3b7e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a0b3e2a1bce2a180e2a39fe2a1b6e2a284e2a180e2a080e2a280e2a1a0e2a096e2a081e2a080e2a280e2a187e2a2b8e2a2bbe2a0b8e2a180e2a080e2a3bfe2a287e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a2a0e2a08fe2a2b3e2a09fe2a280e2a0b7e2a088e2a3b9e2a187e2a080e2a080e2a080e2a080e2a3bce2a2a3e2a19ee2a2b8e2a080e2a187e2a2b0e2a3bce2a2b8e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a280e2a08ee2a3a0e2a08be2a280e2a1bce2a09fe2a08ae2a09fe2a080e2a080e2a080e2a080e2a080e2a3bfe2a080e2a091e2a2afe2a380e2a387e2a38ee2a28fe2a19ee2a080e2a080e2a0800ae2a080e2a080e2a080e2a280e2a1a0e2a0bee2a094e2a093e2a29ee2a381e2a380e2a380e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2bbe2a380e2a380e2a380e2a188e2a09be2a0bfe2a0afe2a380e2a080e2a080e2a0800ae2a080e2a080e2a2a0e2a08be2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a089e2a081e2a090e2a089e2a089e2a089e2a089e2a089e2a3a7e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a091e2a184e2a0800ae2a080e2a080e2a2bbe2a080e2a080e2a080e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a099e2a0a7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b9e2a1860ae2a080e2a080e2a2b8e2a080e2a080e2a1bce2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a3a4e2a080e2a080e2a080e2a080e2a080e2a080e2a1bce2a0830ae2a080e2a080e2a098e2a1a4e2a08ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b9e2a180e2a080e2a080e2a080e2a080e2a2a0e2a087e2a0800ae2a080e2a3a0e2a08ee2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a3e2a080e2a080e2a080e2a080e2a18ee2a080e2a0800ae2a2a0e2a087e2a3a0e2a182e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a080e2a080e2a098e2a184e2a080e2a080e2a1b8e2a080e2a080e2a0800ae2a2b8e2a180e2a09be2a084e2a280e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a3b8e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a0b5e2a080e2a080e2a187e2a080e2a280e2a087e2a080e2a080e2a0800ae2a080e2a2b7e2a180e2a080e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b8e2a180e2a080e2a080e2a080e2a080e2a080e2a082e2a080e2a080e2a080e2a3b0e2a081e2a080e2a3bee2a080e2a080e2a080e2a0800ae2a080e2a080e2a091e2a2a4e2a380e2a080e2a080e2a280e2a3a0e2a0b4e2a08be2a080e2a080e2a099e2a2a6e2a180e2a080e2a080e2a080e2a080e2a080e2a380e2a1b4e2a081e2a080e2a2a0e2a083e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a2a0e2a2bbe2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a092e2a092e2a092e2a089e2a1bde2a080e2a080e2a080e2a1bce2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a0b8e2a3bee2a080e2a090e2a080e2a080e2a080e2a080e2a080e2a091e2a2a4e2a180e2a080e2a080e2a080e2a080e2a080e2a187e2a080e2a080e2a2a0e2a087e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a3bfe2a184e2a080e2a080e2a2a0e2a180e2a080e2a080e2a080e2a080e2a099e2a384e2a080e2a080e2a080e2a2b0e2a081e2a080e2a080e2a3bce2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a2bfe2a387e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a081e2a080e2a280e2a19ce2a080e2a080e2a080e2a197e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a2b8e2a2b8e2a080e2a080e2a2b8e2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a0e2a187e2a080e2a080e2a080e2a187e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a0b8e2a3bfe2a186e2a080e2a2b8e2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a090e2a187e2a080e2a080e2a2b0e2a083e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a3bbe2a081e2a080e2a0b8e2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a3e2a080e2a080e2a19ee2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a2a0e2a083e2a080e2a080e2a0b8e2a2b3e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a0b3e2a1bce2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a2a0e2a08fe2a080e2a080e2a080e2a2b8e2a3bfe2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a0a2e2a180e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a280e2a18ee2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a098e2a2a6e2a180e2a080e2a080e2a080e2a0800a0a0ae2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a084e2a09ee2a08fe2a382e2a3b0e2a196e2a3b6e2a3b6e2a3b4e2a09be2a183e2a084e2a084e2a0840ae2a084e2a084e2a084e2a380e2a380e2a180e2a0a4e2a2a4e2a2a4e2a1a6e2a2a3e2a29ee2a18fe2a2bbe2a187e2a1bbe2a187e2a3bfe2a28ae2a2b8e2a184e2a084e2a0840ae2a084e2a084e2a084e2a2bfe2a3bfe2a3bfe2a09fe2a084e2a0a3e2a1b4e2a3bce2a2b8e2a283e2a1bbe2a183e2a3abe2a0a0e2a2b9e2a2b8e2a2b8e2a187e2a084e2a0840ae2a084e2a084e2a084e2a088e2a0bbe2a3bfe2a3b7e2a3a4e2a180e2a081e2a3bfe2a0b8e2a0b0e2a086e2a1a1e2a3a7e2a39be2a198e2a3b8e2a2b8e2a187e2a084e2a0840ae2a084e2a084e2a084e2a084e2a2b8e2a3aee2a0bbe2a3bfe2a3bfe2a3b6e2a38de2a0b3e2a09ce2a2bfe2a39fe2a389e2a1bfe2a283e2a2bbe2a098e2a184e2a084e2a0840ae2a084e2a084e2a084e2a084e2a2b8e2a187e2a084e2a084e2a099e2a2a7e2a2bbe2a3b7e2a396e2a2a4e2a3b6e2a3b7e2a3aee2a38ce2a1b8e2a0b8e2a187e2a084e2a0840ae2a084e2a084e2a084e2a084e2a2b8e2a187e2a084e2a084e2a084e2a2a8e2a3bce2a3bfe2a3bfe2a2b7e2a3bfe2a3ade2a3ade2a3b6e2a1bfe2a2bfe2a186e2a084e2a0840ae2a084e2a084e2a084e2a280e2a3bfe2a187e2a084e2a084e2a2a0e2a3bfe2a1bfe2a19be2a3bfe2a18ee2a2abe2a3bee2a3bfe2a3bfe2a3b7e2a18ce2a083e2a084e2a0840ae2a084e2a084e2a084e2a1b8e2a2b9e2a187e2a084e2a084e2a098e2a2bfe2a3b7e2a3b6e2a3bfe2a287e2a3bfe2a3bfe2a390e2a3b8e2a3bfe2a187e2a186e2a084e2a0840ae2a084e2a084e2a084e2a187e2a0b8e2a187e2a084e2a084e2a280e2a3b7e2a3b6e2a3b6e2a3b6e2a3bfe2a3aee2a39be2a39be2a29be2a39be2a185e2a187e2a084e2a0840ae2a084e2a084e2a084e2a187e2a084e2a187e2a084e2a084e2a3bce2a3bfe2a3bfe2a3bfe2a2bfe2a3bfe2a3bfe2a3bfe2a19fe2a2b8e2a3bfe2a187e2a187e2a084e2a0840ae2a084e2a084e2a084e2a187e2a2b8e2a287e2a3a4e2a3bee2a3bfe2a3bfe2a3bfe2a28fe2a3bee2a3bfe2a3bfe2a3bfe2a081e2a2b8e2a3bfe2a187e2a187e2a084e2a0840ae2a084e2a084e2a3b0e2a3bfe2a3b7e2a0b9e2a3a7e2a39de2a1bbe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a19fe2a084e2a084e2a184e2a3bfe2a187e2a387e2a084e2a0840ae2a084e2a3b8e2a3bfe2a3bfe2a3bfe2a3a7e2a2b9e2a3bfe2a3bfe2a3b7e2a3aee2a3ade2a1ade2a0ace2a085e2a084e2a0a0e2a187e2a3bfe2a187e2a3bfe2a084e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a187e2a09fe2a1bce2a38be2a3b5e2a3b6e2a3bee2a3bfe2a3b7e2a084e2a084e2a187e2a3bfe2a387e2a2bfe2a180e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3b7e2a084e2a091e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3a7e2a084e2a187e2a2bfe2a3bfe2a3aee2a385e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a18fe2a084e2a084e2a098e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a186e2a187e2a3b7e2a186e2a3ade2a092e2a0840ae2a084e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a187e2a084e2a084e2a084e2a099e2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a3bfe2a180e2a3bfe2a084e2a084e2a084e2a0840ae2a084e2a2bbe2a3bfe2a3bfe2a3bfe2a3bfe2a083e2a084e2a084e2a084e2a084e2a088e2a2bfe2a3bfe2a3bfe2a3bfe2a3bfe2a387e2a3bfe2a180e2a084e2a084e2a0840a0a0ae2a092e2a09be2a0a3e2a084e2a288e2a389e2a089e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a082e2a180e2a089e2a082e2a0a0e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a0800ae2a080e2a080e2a080e2a080e2a080e2a080e2a088e2a089e2a090e2a082e2a084e2a180e2a080e2a0a0e2a180e2a2b4e2a080e2a08ee2a080e2a380e2a180e2a0a0e2a084e2a080e2a0a0e2a180e2a280e2a080e2a080e2a0800ae2a0a4e2a380e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a091e2a3bbe2a19be2a09ae2a2b6e2a1b4e2a28be2a3bfe2a097e2a090e2a092e2a388e2a1a6e2a09ae2a081e2a080e2a080e2a0800ae2a29fe2a09ae2a093e2a1a6e2a384e2a380e2a080e2a080e2a380e2a180e2a094e2a08be2a080e2a1b9e2a0afe2a0a7e2a282e2a2a4e2a280e2a2b0e2a3a0e2a2a6e2a0a5e2a28be2a080e2a080e2a080e2a080e2a080e2a0800ae2a3bee2a3ade2a39fe2a3b3e2a3b6e2a09de2a081e2a080e2a080e2a080e2a080e2a080e2a2b0e2a081e2a080e2a380e2a38ee2a38ee2a080e2a1a0e2a090e2a081e2a080e2a080e2a091e2a0a4e2a280e2a380e2a3a0e2a3b40ae2a384e2a399e2a3bfe2a09fe2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a19ce2a089e2a089e2a089e2a289e2a09de2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a081e2a2b8e2a0a5e2a0840ae2a3bfe2a1bfe2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a1a0e2a088e2a190e2a089e2a089e2a195e2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a186e2a0800ae2a3bfe2a081e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a081e2a2b0e2a080e2a080e2a09ce2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a3bfe2a38f0ae2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a287e2a3bfe2a1a0e2a08ae2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a188e2a09d0ae2a187e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2a8e2a1a9e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a183e2a0800ae2a3bfe2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b0e2a083e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a080e2a0800ae2a3bfe2a3bfe2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a2b8e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a18ee2a080e2a0800ae2a08be2a381e2a09ce2a0a2e2a380e2a080e2a080e2a080e2a080e2a080e2a098e2a184e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a19ce2a080e2a080e2a0800ae2a088e2a080e2a080e2a280e2a3b9e2a0bde2a0b6e2a0a0e2a0a4e2a1a4e2a0a4e2a3bce2a3a6e2a180e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a280e2a3b4e2a1bfe2a083e2a080e2a080e2a0800ae2a084e2a090e2a089e2a081e2a080e2a280e2a1a0e2a294e2a1a9e2a094e2a08be2a080e2a3ade2a3bfe2a3a7e2a3a4e2a380e2a380e2a380e2a380e2a3a0e2a3a4e2a3b6e2a3bfe2a3bfe2a084e2a080e2a080e2a080e2a0800aa26469706673582212204b40216dc7947a6c5488c2aea119a50f3370d8e311e86a465e1e2fd5744c93b364736f6c63430008140033

Deployed Bytecode Sourcemap

77873:19355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86364:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;87289:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;91940:81;;;;;;;;;;;;;:::i;:::-;;85198:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;86641:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;97106:116;;;;;;;;;;;;;:::i;:::-;;87490:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;85507:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;86550:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;85246:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;86744:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;75360:148;;;;;;;;;;;;;:::i;:::-;;85395:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;84940:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96675:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;75146:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;85450:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;86455:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;92029:237;;;;;;;;;;;;;:::i;:::-;;86890:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96377:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;92274:236;;;;;;;;;;;;;:::i;:::-;;84902:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96864:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;95916:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;87097:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96554:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;75516:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;86364:83;86401:13;86434:5;;;;;;;;;;;;;;;;;86427:12;;86364:83;:::o;87289:193::-;87391:4;87413:39;87422:12;:10;:12::i;:::-;87436:7;87445:6;87413:8;:39::i;:::-;87470:4;87463:11;;87289:193;;;;:::o;91940:81::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;92009:4:::1;91995:11;;:18;;;;;;;;;;;;;;;;;;91940:81::o:0;85198:41::-;;;;;;;;;;;;;:::o;86641:95::-;86694:7;84400:20;86714:14;;86641:95;:::o;97106:116::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;84400:20:::1;97157:12;:22;;;;84400:20;97190:14;:24;;;;97106:116::o:0;87490:446::-;87622:4;87639:36;87649:6;87657:9;87668:6;87639:9;:36::i;:::-;87686:220;87709:6;87730:12;:10;:12::i;:::-;87757:138;87813:6;87757:138;;;;;;;;;;;;;;;;;:11;:19;87769:6;87757:19;;;;;;;;;;;;;;;:33;87777:12;:10;:12::i;:::-;87757:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;87686:8;:220::i;:::-;87924:4;87917:11;;87490:446;;;;;:::o;85507:55::-;;;;:::o;86550:83::-;86591:5;84074:1;86609:16;;86550:83;:::o;85246:28::-;;;;;;;;;;;;;:::o;86744:138::-;86810:7;86837:37;86857:7;:16;86865:7;86857:16;;;;;;;;;;;;;;;;86837:19;:37::i;:::-;86830:44;;86744:138;;;:::o;75360:148::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;75467:1:::1;75430:40;;75451:6;::::0;::::1;;;;;;;;75430:40;;;;;;;;;;;;75498:1;75481:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;75360:148::o:0;85395:48::-;;;;:::o;84940:43::-;;;;;;;;;;;;;;;;;:::o;96675:181::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;96798:5:::1;96782:13;:21;;;;:::i;:::-;96765:14;:38;;;;96843:5;96829:11;:19;;;;:::i;:::-;96814:12;:34;;;;96675:181:::0;;:::o;75146:79::-;75184:7;75211:6;;;;;;;;;;;75204:13;;75146:79;:::o;85450:50::-;;;;:::o;86455:87::-;86494:13;86527:7;;;;;;;;;;;;;;;;;86520:14;;86455:87;:::o;92029:237::-;92096:19;;;;;;;;;;;92080:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;92135:17;;;;;;;;;;;92119:33;;:12;:10;:12::i;:::-;:33;;;92080:72;92072:81;;;;;;92164:23;92190:24;92208:4;92190:9;:24::i;:::-;92164:50;;92225:33;92242:15;92225:16;:33::i;:::-;92061:205;92029:237::o;86890:199::-;86995:4;87017:42;87027:12;:10;:12::i;:::-;87041:9;87052:6;87017:9;:42::i;:::-;87077:4;87070:11;;86890:199;;;;:::o;96377:125::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;96476:18:::1;96454:19;:40;;;;96377:125:::0;:::o;92274:236::-;92341:19;;;;;;;;;;;92325:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;92380:17;;;;;;;;;;;92364:33;;:12;:10;:12::i;:::-;:33;;;92325:72;92317:81;;;;;;92409:26;92438:21;92409:50;;92470:32;92483:18;92470:12;:32::i;:::-;92306:204;92274:236::o;84902:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;96864:234::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;96981:9:::1;96977:114;97000:8;;:15;;96996:1;:19;96977:114;;;97071:8;97037:18;:31;97056:8;;97065:1;97056:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;97037:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;97017:3;;;;;:::i;:::-;;;;96977:114;;;;96864:234:::0;;;:::o;95916:409::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;96097:2:::1;96081:11;96065:13;:27;;;;:::i;:::-;96064:35;;96056:44;;;::::0;::::1;;96154:2;96137:12;96120:14;:29;;;;:::i;:::-;96119:37;;96111:46;;;::::0;::::1;;96185:13;96168:14;:30;;;;96227:14;96209:15;:32;;;;96267:11;96252:12;:26;;;;96305:12;96289:13;:28;;;;95916:409:::0;;;;:::o;87097:184::-;87214:7;87246:11;:18;87258:5;87246:18;;;;;;;;;;;;;;;:27;87265:7;87246:27;;;;;;;;;;;;;;;;87239:34;;87097:184;;;;:::o;96554:111::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;96645:12:::1;96631:11;;:26;;;;;;;;;;;;;;;;;;96554:111:::0;:::o;75516:244::-;75283:12;:10;:12::i;:::-;75273:22;;:6;;;;;;;;;;:22;;;75265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;75625:1:::1;75605:22;;:8;:22;;::::0;75597:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;75715:8;75686:38;;75707:6;::::0;::::1;;;;;;;;75686:38;;;;;;;;;;;;75744:8;75735:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;75516:244:::0;:::o;73905:98::-;73958:7;73985:10;73978:17;;73905:98;:::o;88627:369::-;88771:1;88754:19;;:5;:19;;;88746:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;88852:1;88833:21;;:7;:21;;;88825:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;88934:6;88904:11;:18;88916:5;88904:18;;;;;;;;;;;;;;;:27;88923:7;88904:27;;;;;;;;;;;;;;;:36;;;;88972:7;88956:32;;88965:5;88956:32;;;88981:6;88956:32;;;;;;:::i;:::-;;;;;;;;88627:369;;;:::o;89004:2330::-;89142:1;89126:18;;:4;:18;;;89118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;89219:1;89205:16;;:2;:16;;;89197:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;89289:1;89280:6;:10;89272:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;89361:7;:5;:7::i;:::-;89353:15;;:4;:15;;;;:32;;;;;89378:7;:5;:7::i;:::-;89372:13;;:2;:13;;;;89353:32;89349:1259;;;89442:11;;;;;;;;;;;89437:144;;89490:7;:5;:7::i;:::-;89482:15;;:4;:15;;;89474:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;89437:144;89615:12;;89605:6;:22;;89597:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;89684:4;:10;89689:4;89684:10;;;;;;;;;;;;;;;;;;;;;;;;;89683:11;:24;;;;;89699:4;:8;89704:2;89699:8;;;;;;;;;;;;;;;;;;;;;;;;;89698:9;89683:24;89675:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;89773:13;;;;;;;;;;;89767:19;;:2;:19;;;89764:146;;89840:14;;89831:6;89815:13;89825:2;89815:9;:13::i;:::-;:22;;;;:::i;:::-;:39;89807:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;89764:146;89926:28;89957:24;89975:4;89957:9;:24::i;:::-;89926:55;;89996:12;90035:19;;90011:20;:43;;89996:58;;90098:12;;90074:20;:36;90071:124;;90167:12;;90144:35;;90071:124;90215:7;:18;;;;;90227:6;;;;;;;;;;90226:7;90215:18;:43;;;;;90245:13;;;;;;;;;;;90237:21;;:4;:21;;;;90215:43;:58;;;;;90262:11;;;;;;;;;;;90215:58;:87;;;;;90278:18;:24;90297:4;90278:24;;;;;;;;;;;;;;;;;;;;;;;;;90277:25;90215:87;:114;;;;;90307:18;:22;90326:2;90307:22;;;;;;;;;;;;;;;;;;;;;;;;;90306:23;90215:114;90211:386;;;90350:38;90367:20;90350:16;:38::i;:::-;90407:26;90436:21;90407:50;;90501:1;90480:18;:22;90476:106;;;90527:35;90540:21;90527:12;:35::i;:::-;90476:106;90331:266;90211:386;89387:1221;;89349:1259;90620:12;90635:4;90620:19;;90684:18;:24;90703:4;90684:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;90712:18;:22;90731:2;90712:22;;;;;;;;;;;;;;;;;;;;;;;;;90684:50;90683:102;;;;90748:13;;;;;;;;;;;90740:21;;:4;:21;;;;:44;;;;;90771:13;;;;;;;;;;;90765:19;;:2;:19;;;;90740:44;90683:102;90679:594;;;90812:5;90802:15;;90679:594;;;90895:13;;;;;;;;;;;90887:21;;:4;:21;;;:55;;;;;90926:15;;;;;;;;;;;90912:30;;:2;:30;;;;90887:55;90884:162;;;90975:14;;90963:9;:26;;;;91018:12;;91008:7;:22;;;;90884:162;91105:13;;;;;;;;;;;91099:19;;:2;:19;;;:55;;;;;91138:15;;;;;;;;;;;91122:32;;:4;:32;;;;91099:55;91095:165;;;91187:15;;91175:9;:27;;;;91231:13;;91221:7;:23;;;;91095:165;90679:594;91285:41;91300:4;91306:2;91310:6;91318:7;91285:14;:41::i;:::-;89107:2227;89004:2330;;;:::o;76124:224::-;76244:7;76277:1;76272;:6;;76280:12;76264:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;76304:9;76320:1;76316;:5;;;;:::i;:::-;76304:17;;76339:1;76332:8;;;76124:224;;;;;:::o;87944:323::-;88039:7;88097;;88086;:18;;88064:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;88185:19;88207:10;:8;:10::i;:::-;88185:32;;88235:24;88247:11;88235:7;:11;;:24;;;;:::i;:::-;88228:31;;;87944:323;;;:::o;91342:483::-;85665:4;85656:6;;:13;;;;;;;;;;;;;;;;;;91420:21:::1;91458:1;91444:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;91420:40;;91489:4;91471;91476:1;91471:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;91515:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;91505:4;91510:1;91505:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;91548:62;91565:4;91580:15;;;;;;;;;;;91598:11;91548:8;:62::i;:::-;91621:15;;;;;;;;;;;:66;;;91702:11;91728:1;91744:4;91771;91791:15;91621:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;91409:416;85701:5:::0;85692:6;;:14;;;;;;;;;;;;;;;;;;91342:483;:::o;91833:99::-;91890:17;;;;;;;;;;;:26;;:34;91917:6;91890:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;91833:99;:::o;92518:282::-;92674:7;92669:28;;92683:14;:12;:14::i;:::-;92669:28;92708:44;92726:6;92734:9;92745:6;92708:17;:44::i;:::-;92768:7;92763:29;;92777:15;:13;:15::i;:::-;92763:29;92518:282;;;;:::o;95479:164::-;95521:7;95542:15;95559;95578:19;:17;:19::i;:::-;95541:56;;;;95615:20;95627:7;95615;:11;;:20;;;;:::i;:::-;95608:27;;;;95479:164;:::o;76610:132::-;76668:7;76695:39;76699:1;76702;76695:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;76688:46;;76610:132;;;;:::o;88275:219::-;88335:1;88322:9;;:14;:30;;;;;88351:1;88340:7;;:12;88322:30;88354:7;88318:43;88393:9;;88373:17;:29;;;;88431:7;;88413:15;:25;;;;88463:1;88451:9;:13;;;;88485:1;88475:7;:11;;;;88275:219;:::o;92808:610::-;92955:15;92985:23;93023:12;93050:23;93088:12;93115:13;93142:19;93153:7;93142:10;:19::i;:::-;92940:221;;;;;;;;;;;;93190:28;93210:7;93190;:15;93198:6;93190:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;93172:7;:15;93180:6;93172:15;;;;;;;;;;;;;;;:46;;;;93250:39;93273:15;93250:7;:18;93258:9;93250:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;93229:7;:18;93237:9;93229:18;;;;;;;;;;;;;;;:60;;;;93300:16;93310:5;93300:9;:16::i;:::-;93327:23;93339:4;93345;93327:11;:23::i;:::-;93383:9;93366:44;;93375:6;93366:44;;;93394:15;93366:44;;;;;;:::i;:::-;;;;;;;;92929:489;;;;;;92808:610;;;:::o;88502:117::-;88558:17;;88546:9;:29;;;;88596:15;;88586:7;:25;;;;88502:117::o;95651:257::-;95702:7;95711;95731:15;95749:7;;95731:25;;95767:15;84400:20;95767:25;;95817:20;84400;95817:7;;:11;;:20;;;;:::i;:::-;95807:7;:30;95803:61;;;95847:7;;84400:20;95839:25;;;;;;;;95803:61;95883:7;95892;95875:25;;;;;;95651:257;;;:::o;76750:223::-;76870:7;76902:1;76898;:5;76905:12;76890:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;76929:9;76945:1;76941;:5;;;;:::i;:::-;76929:17;;76964:1;76957:8;;;76750:223;;;;;:::o;93837:615::-;93937:7;93959;93981;94003;94025;94047;94083:23;94108:12;94122:13;94152:40;94164:7;94173:9;;94184:7;;94152:11;:40::i;:::-;94082:110;;;;;;94203:19;94225:10;:8;:10::i;:::-;94203:32;;94247:15;94264:23;94289:12;94318:46;94330:7;94339:4;94345:5;94352:11;94318;:46::i;:::-;94246:118;;;;;;94383:7;94392:15;94409:4;94415:15;94432:4;94438:5;94375:69;;;;;;;;;;;;;;;;;;;93837:615;;;;;;;:::o;75980:136::-;76038:7;76065:43;76069:1;76072;76065:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;76058:50;;75980:136;;;;:::o;75793:179::-;75851:7;75871:9;75887:1;75883;:5;;;;:::i;:::-;75871:17;;75912:1;75907;:6;;75899:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;75963:1;75956:8;;;75793:179;;;;:::o;93426:211::-;93479:19;93501:10;:8;:10::i;:::-;93479:32;;93522:13;93538:22;93548:11;93538:5;:9;;:22;;;;:::i;:::-;93522:38;;93596:33;93623:5;93596:7;:22;93612:4;93596:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;93571:7;:22;93587:4;93571:22;;;;;;;;;;;;;;;:58;;;;93468:169;;93426:211;:::o;93645:147::-;93723:17;93735:4;93723:7;;:11;;:17;;;;:::i;:::-;93713:7;:27;;;;93764:20;93779:4;93764:10;;:14;;:20;;;;:::i;:::-;93751:10;:33;;;;93645:147;;:::o;94460:469::-;94629:7;94651;94673;94708:12;94723:30;94749:3;94723:21;94735:8;94723:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;94708:45;;94764:13;94780:28;94804:3;94780:19;94792:6;94780:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;94764:44;;94819:23;94845:28;94867:5;94845:17;94857:4;94845:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;94819:54;;94892:15;94909:4;94915:5;94884:37;;;;;;;;;94460:469;;;;;;;:::o;94937:534::-;95131:7;95153;95175;95210:15;95228:24;95240:11;95228:7;:11;;:24;;;;:::i;:::-;95210:42;;95263:12;95278:21;95287:11;95278:4;:8;;:21;;;;:::i;:::-;95263:36;;95310:13;95326:22;95336:11;95326:5;:9;;:22;;;;:::i;:::-;95310:38;;95359:23;95385:28;95407:5;95385:17;95397:4;95385:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;95359:54;;95432:7;95441:15;95458:4;95424:39;;;;;;;;;;94937:534;;;;;;;;:::o;76356:246::-;76414:7;76443:1;76438;:6;76434:47;;76468:1;76461:8;;;;76434:47;76491:9;76507:1;76503;:5;;;;:::i;:::-;76491:17;;76536:1;76531;76527;:5;;;;:::i;:::-;:10;76519:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;76593:1;76586:8;;;76356:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:329::-;7052:6;7101:2;7089:9;7080:7;7076:23;7072:32;7069:119;;;7107:79;;:::i;:::-;7069:119;7227:1;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7198:117;6993:329;;;;:::o;7328:117::-;7437:1;7434;7427:12;7451:117;7560:1;7557;7550:12;7574:117;7683:1;7680;7673:12;7714:568;7787:8;7797:6;7847:3;7840:4;7832:6;7828:17;7824:27;7814:122;;7855:79;;:::i;:::-;7814:122;7968:6;7955:20;7945:30;;7998:18;7990:6;7987:30;7984:117;;;8020:79;;:::i;:::-;7984:117;8134:4;8126:6;8122:17;8110:29;;8188:3;8180:4;8172:6;8168:17;8158:8;8154:32;8151:41;8148:128;;;8195:79;;:::i;:::-;8148:128;7714:568;;;;;:::o;8288:116::-;8358:21;8373:5;8358:21;:::i;:::-;8351:5;8348:32;8338:60;;8394:1;8391;8384:12;8338:60;8288:116;:::o;8410:133::-;8453:5;8491:6;8478:20;8469:29;;8507:30;8531:5;8507:30;:::i;:::-;8410:133;;;;:::o;8549:698::-;8641:6;8649;8657;8706:2;8694:9;8685:7;8681:23;8677:32;8674:119;;;8712:79;;:::i;:::-;8674:119;8860:1;8849:9;8845:17;8832:31;8890:18;8882:6;8879:30;8876:117;;;8912:79;;:::i;:::-;8876:117;9025:80;9097:7;9088:6;9077:9;9073:22;9025:80;:::i;:::-;9007:98;;;;8803:312;9154:2;9180:50;9222:7;9213:6;9202:9;9198:22;9180:50;:::i;:::-;9170:60;;9125:115;8549:698;;;;;:::o;9253:765::-;9339:6;9347;9355;9363;9412:3;9400:9;9391:7;9387:23;9383:33;9380:120;;;9419:79;;:::i;:::-;9380:120;9539:1;9564:53;9609:7;9600:6;9589:9;9585:22;9564:53;:::i;:::-;9554:63;;9510:117;9666:2;9692:53;9737:7;9728:6;9717:9;9713:22;9692:53;:::i;:::-;9682:63;;9637:118;9794:2;9820:53;9865:7;9856:6;9845:9;9841:22;9820:53;:::i;:::-;9810:63;;9765:118;9922:2;9948:53;9993:7;9984:6;9973:9;9969:22;9948:53;:::i;:::-;9938:63;;9893:118;9253:765;;;;;;;:::o;10024:474::-;10092:6;10100;10149:2;10137:9;10128:7;10124:23;10120:32;10117:119;;;10155:79;;:::i;:::-;10117:119;10275:1;10300:53;10345:7;10336:6;10325:9;10321:22;10300:53;:::i;:::-;10290:63;;10246:117;10402:2;10428:53;10473:7;10464:6;10453:9;10449:22;10428:53;:::i;:::-;10418:63;;10373:118;10024:474;;;;;:::o;10504:323::-;10560:6;10609:2;10597:9;10588:7;10584:23;10580:32;10577:119;;;10615:79;;:::i;:::-;10577:119;10735:1;10760:50;10802:7;10793:6;10782:9;10778:22;10760:50;:::i;:::-;10750:60;;10706:114;10504:323;;;;:::o;10833:182::-;10973:34;10969:1;10961:6;10957:14;10950:58;10833:182;:::o;11021:366::-;11163:3;11184:67;11248:2;11243:3;11184:67;:::i;:::-;11177:74;;11260:93;11349:3;11260:93;:::i;:::-;11378:2;11373:3;11369:12;11362:19;;11021:366;;;:::o;11393:419::-;11559:4;11597:2;11586:9;11582:18;11574:26;;11646:9;11640:4;11636:20;11632:1;11621:9;11617:17;11610:47;11674:131;11800:4;11674:131;:::i;:::-;11666:139;;11393:419;;;:::o;11818:180::-;11866:77;11863:1;11856:88;11963:4;11960:1;11953:15;11987:4;11984:1;11977:15;12004:410;12044:7;12067:20;12085:1;12067:20;:::i;:::-;12062:25;;12101:20;12119:1;12101:20;:::i;:::-;12096:25;;12156:1;12153;12149:9;12178:30;12196:11;12178:30;:::i;:::-;12167:41;;12357:1;12348:7;12344:15;12341:1;12338:22;12318:1;12311:9;12291:83;12268:139;;12387:18;;:::i;:::-;12268:139;12052:362;12004:410;;;;:::o;12420:180::-;12468:77;12465:1;12458:88;12565:4;12562:1;12555:15;12589:4;12586:1;12579:15;12606:233;12645:3;12668:24;12686:5;12668:24;:::i;:::-;12659:33;;12714:66;12707:5;12704:77;12701:103;;12784:18;;:::i;:::-;12701:103;12831:1;12824:5;12820:13;12813:20;;12606:233;;;:::o;12845:191::-;12885:3;12904:20;12922:1;12904:20;:::i;:::-;12899:25;;12938:20;12956:1;12938:20;:::i;:::-;12933:25;;12981:1;12978;12974:9;12967:16;;13002:3;12999:1;12996:10;12993:36;;;13009:18;;:::i;:::-;12993:36;12845:191;;;;:::o;13042:225::-;13182:34;13178:1;13170:6;13166:14;13159:58;13251:8;13246:2;13238:6;13234:15;13227:33;13042:225;:::o;13273:366::-;13415:3;13436:67;13500:2;13495:3;13436:67;:::i;:::-;13429:74;;13512:93;13601:3;13512:93;:::i;:::-;13630:2;13625:3;13621:12;13614:19;;13273:366;;;:::o;13645:419::-;13811:4;13849:2;13838:9;13834:18;13826:26;;13898:9;13892:4;13888:20;13884:1;13873:9;13869:17;13862:47;13926:131;14052:4;13926:131;:::i;:::-;13918:139;;13645:419;;;:::o;14070:223::-;14210:34;14206:1;14198:6;14194:14;14187:58;14279:6;14274:2;14266:6;14262:15;14255:31;14070:223;:::o;14299:366::-;14441:3;14462:67;14526:2;14521:3;14462:67;:::i;:::-;14455:74;;14538:93;14627:3;14538:93;:::i;:::-;14656:2;14651:3;14647:12;14640:19;;14299:366;;;:::o;14671:419::-;14837:4;14875:2;14864:9;14860:18;14852:26;;14924:9;14918:4;14914:20;14910:1;14899:9;14895:17;14888:47;14952:131;15078:4;14952:131;:::i;:::-;14944:139;;14671:419;;;:::o;15096:221::-;15236:34;15232:1;15224:6;15220:14;15213:58;15305:4;15300:2;15292:6;15288:15;15281:29;15096:221;:::o;15323:366::-;15465:3;15486:67;15550:2;15545:3;15486:67;:::i;:::-;15479:74;;15562:93;15651:3;15562:93;:::i;:::-;15680:2;15675:3;15671:12;15664:19;;15323:366;;;:::o;15695:419::-;15861:4;15899:2;15888:9;15884:18;15876:26;;15948:9;15942:4;15938:20;15934:1;15923:9;15919:17;15912:47;15976:131;16102:4;15976:131;:::i;:::-;15968:139;;15695:419;;;:::o;16120:224::-;16260:34;16256:1;16248:6;16244:14;16237:58;16329:7;16324:2;16316:6;16312:15;16305:32;16120:224;:::o;16350:366::-;16492:3;16513:67;16577:2;16572:3;16513:67;:::i;:::-;16506:74;;16589:93;16678:3;16589:93;:::i;:::-;16707:2;16702:3;16698:12;16691:19;;16350:366;;;:::o;16722:419::-;16888:4;16926:2;16915:9;16911:18;16903:26;;16975:9;16969:4;16965:20;16961:1;16950:9;16946:17;16939:47;17003:131;17129:4;17003:131;:::i;:::-;16995:139;;16722:419;;;:::o;17147:222::-;17287:34;17283:1;17275:6;17271:14;17264:58;17356:5;17351:2;17343:6;17339:15;17332:30;17147:222;:::o;17375:366::-;17517:3;17538:67;17602:2;17597:3;17538:67;:::i;:::-;17531:74;;17614:93;17703:3;17614:93;:::i;:::-;17732:2;17727:3;17723:12;17716:19;;17375:366;;;:::o;17747:419::-;17913:4;17951:2;17940:9;17936:18;17928:26;;18000:9;17994:4;17990:20;17986:1;17975:9;17971:17;17964:47;18028:131;18154:4;18028:131;:::i;:::-;18020:139;;17747:419;;;:::o;18172:228::-;18312:34;18308:1;18300:6;18296:14;18289:58;18381:11;18376:2;18368:6;18364:15;18357:36;18172:228;:::o;18406:366::-;18548:3;18569:67;18633:2;18628:3;18569:67;:::i;:::-;18562:74;;18645:93;18734:3;18645:93;:::i;:::-;18763:2;18758:3;18754:12;18747:19;;18406:366;;;:::o;18778:419::-;18944:4;18982:2;18971:9;18967:18;18959:26;;19031:9;19025:4;19021:20;19017:1;19006:9;19002:17;18995:47;19059:131;19185:4;19059:131;:::i;:::-;19051:139;;18778:419;;;:::o;19203:250::-;19343:34;19339:1;19331:6;19327:14;19320:58;19412:33;19407:2;19399:6;19395:15;19388:58;19203:250;:::o;19459:366::-;19601:3;19622:67;19686:2;19681:3;19622:67;:::i;:::-;19615:74;;19698:93;19787:3;19698:93;:::i;:::-;19816:2;19811:3;19807:12;19800:19;;19459:366;;;:::o;19831:419::-;19997:4;20035:2;20024:9;20020:18;20012:26;;20084:9;20078:4;20074:20;20070:1;20059:9;20055:17;20048:47;20112:131;20238:4;20112:131;:::i;:::-;20104:139;;19831:419;;;:::o;20256:178::-;20396:30;20392:1;20384:6;20380:14;20373:54;20256:178;:::o;20440:366::-;20582:3;20603:67;20667:2;20662:3;20603:67;:::i;:::-;20596:74;;20679:93;20768:3;20679:93;:::i;:::-;20797:2;20792:3;20788:12;20781:19;;20440:366;;;:::o;20812:419::-;20978:4;21016:2;21005:9;21001:18;20993:26;;21065:9;21059:4;21055:20;21051:1;21040:9;21036:17;21029:47;21093:131;21219:4;21093:131;:::i;:::-;21085:139;;20812:419;;;:::o;21237:222::-;21377:34;21373:1;21365:6;21361:14;21354:58;21446:5;21441:2;21433:6;21429:15;21422:30;21237:222;:::o;21465:366::-;21607:3;21628:67;21692:2;21687:3;21628:67;:::i;:::-;21621:74;;21704:93;21793:3;21704:93;:::i;:::-;21822:2;21817:3;21813:12;21806:19;;21465:366;;;:::o;21837:419::-;22003:4;22041:2;22030:9;22026:18;22018:26;;22090:9;22084:4;22080:20;22076:1;22065:9;22061:17;22054:47;22118:131;22244:4;22118:131;:::i;:::-;22110:139;;21837:419;;;:::o;22262:222::-;22402:34;22398:1;22390:6;22386:14;22379:58;22471:5;22466:2;22458:6;22454:15;22447:30;22262:222;:::o;22490:366::-;22632:3;22653:67;22717:2;22712:3;22653:67;:::i;:::-;22646:74;;22729:93;22818:3;22729:93;:::i;:::-;22847:2;22842:3;22838:12;22831:19;;22490:366;;;:::o;22862:419::-;23028:4;23066:2;23055:9;23051:18;23043:26;;23115:9;23109:4;23105:20;23101:1;23090:9;23086:17;23079:47;23143:131;23269:4;23143:131;:::i;:::-;23135:139;;22862:419;;;:::o;23287:194::-;23327:4;23347:20;23365:1;23347:20;:::i;:::-;23342:25;;23381:20;23399:1;23381:20;:::i;:::-;23376:25;;23425:1;23422;23418:9;23410:17;;23449:1;23443:4;23440:11;23437:37;;;23454:18;;:::i;:::-;23437:37;23287:194;;;;:::o;23487:229::-;23627:34;23623:1;23615:6;23611:14;23604:58;23696:12;23691:2;23683:6;23679:15;23672:37;23487:229;:::o;23722:366::-;23864:3;23885:67;23949:2;23944:3;23885:67;:::i;:::-;23878:74;;23961:93;24050:3;23961:93;:::i;:::-;24079:2;24074:3;24070:12;24063:19;;23722:366;;;:::o;24094:419::-;24260:4;24298:2;24287:9;24283:18;24275:26;;24347:9;24341:4;24337:20;24333:1;24322:9;24318:17;24311:47;24375:131;24501:4;24375:131;:::i;:::-;24367:139;;24094:419;;;:::o;24519:180::-;24567:77;24564:1;24557:88;24664:4;24661:1;24654:15;24688:4;24685:1;24678:15;24705:143;24762:5;24793:6;24787:13;24778:22;;24809:33;24836:5;24809:33;:::i;:::-;24705:143;;;;:::o;24854:351::-;24924:6;24973:2;24961:9;24952:7;24948:23;24944:32;24941:119;;;24979:79;;:::i;:::-;24941:119;25099:1;25124:64;25180:7;25171:6;25160:9;25156:22;25124:64;:::i;:::-;25114:74;;25070:128;24854:351;;;;:::o;25211:85::-;25256:7;25285:5;25274:16;;25211:85;;;:::o;25302:158::-;25360:9;25393:61;25411:42;25420:32;25446:5;25420:32;:::i;:::-;25411:42;:::i;:::-;25393:61;:::i;:::-;25380:74;;25302:158;;;:::o;25466:147::-;25561:45;25600:5;25561:45;:::i;:::-;25556:3;25549:58;25466:147;;:::o;25619:114::-;25686:6;25720:5;25714:12;25704:22;;25619:114;;;:::o;25739:184::-;25838:11;25872:6;25867:3;25860:19;25912:4;25907:3;25903:14;25888:29;;25739:184;;;;:::o;25929:132::-;25996:4;26019:3;26011:11;;26049:4;26044:3;26040:14;26032:22;;25929:132;;;:::o;26067:108::-;26144:24;26162:5;26144:24;:::i;:::-;26139:3;26132:37;26067:108;;:::o;26181:179::-;26250:10;26271:46;26313:3;26305:6;26271:46;:::i;:::-;26349:4;26344:3;26340:14;26326:28;;26181:179;;;;:::o;26366:113::-;26436:4;26468;26463:3;26459:14;26451:22;;26366:113;;;:::o;26515:732::-;26634:3;26663:54;26711:5;26663:54;:::i;:::-;26733:86;26812:6;26807:3;26733:86;:::i;:::-;26726:93;;26843:56;26893:5;26843:56;:::i;:::-;26922:7;26953:1;26938:284;26963:6;26960:1;26957:13;26938:284;;;27039:6;27033:13;27066:63;27125:3;27110:13;27066:63;:::i;:::-;27059:70;;27152:60;27205:6;27152:60;:::i;:::-;27142:70;;26998:224;26985:1;26982;26978:9;26973:14;;26938:284;;;26942:14;27238:3;27231:10;;26639:608;;;26515:732;;;;:::o;27253:831::-;27516:4;27554:3;27543:9;27539:19;27531:27;;27568:71;27636:1;27625:9;27621:17;27612:6;27568:71;:::i;:::-;27649:80;27725:2;27714:9;27710:18;27701:6;27649:80;:::i;:::-;27776:9;27770:4;27766:20;27761:2;27750:9;27746:18;27739:48;27804:108;27907:4;27898:6;27804:108;:::i;:::-;27796:116;;27922:72;27990:2;27979:9;27975:18;27966:6;27922:72;:::i;:::-;28004:73;28072:3;28061:9;28057:19;28048:6;28004:73;:::i;:::-;27253:831;;;;;;;;:::o;28090:180::-;28138:77;28135:1;28128:88;28235:4;28232:1;28225:15;28259:4;28256:1;28249:15;28276:185;28316:1;28333:20;28351:1;28333:20;:::i;:::-;28328:25;;28367:20;28385:1;28367:20;:::i;:::-;28362:25;;28406:1;28396:35;;28411:18;;:::i;:::-;28396:35;28453:1;28450;28446:9;28441:14;;28276:185;;;;:::o;28467:177::-;28607:29;28603:1;28595:6;28591:14;28584:53;28467:177;:::o;28650:366::-;28792:3;28813:67;28877:2;28872:3;28813:67;:::i;:::-;28806:74;;28889:93;28978:3;28889:93;:::i;:::-;29007:2;29002:3;28998:12;28991:19;;28650:366;;;:::o;29022:419::-;29188:4;29226:2;29215:9;29211:18;29203:26;;29275:9;29269:4;29265:20;29261:1;29250:9;29246:17;29239:47;29303:131;29429:4;29303:131;:::i;:::-;29295:139;;29022:419;;;:::o;29447:220::-;29587:34;29583:1;29575:6;29571:14;29564:58;29656:3;29651:2;29643:6;29639:15;29632:28;29447:220;:::o;29673:366::-;29815:3;29836:67;29900:2;29895:3;29836:67;:::i;:::-;29829:74;;29912:93;30001:3;29912:93;:::i;:::-;30030:2;30025:3;30021:12;30014:19;;29673:366;;;:::o;30045:419::-;30211:4;30249:2;30238:9;30234:18;30226:26;;30298:9;30292:4;30288:20;30284:1;30273:9;30269:17;30262:47;30326:131;30452:4;30326:131;:::i;:::-;30318:139;;30045:419;;;:::o

Swarm Source

ipfs://4b40216dc7947a6c5488c2aea119a50f3370d8e311e86a465e1e2fd5744c93b3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.