Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Home

Guy edited this page · 81 revisions
Clone this wiki locally

osu!api

https://osu.ppy.sh/api/

Api Version: 1.0

Overview

The osu! API is intended to allow the creation of third-party awesomeness. It is still in its infancy and primarily been written based on requests of users. If you have any additions you would like to see in the API, please file issues in this GitHub repository. Including a use case will help speed up implementation – if I see that it is going to be used for something cool I will be more likely to add it immediately.

Terms of Use

Use the API for good. Don't overdo it. If in doubt, ask before (ab)using :). this section may expand as necessary.

Current rate limit is set at an insanely high 1200 requests per minute, with burst capability of up to 200 beyond that. If you require more, you probably fall into the above category of abuse. If you are doing more than 60 requests a minute, you should probably give peppy a yell.

Requesting Access

You may request an API key from https://osu.ppy.sh/p/api.

Beatmap

/api/get_beatmaps

Overview

Retrieve general beatmap information.

URL
/api/get_beatmaps
Parameters
  • k - api key (required).
  • since - return all beatmaps ranked since this date. Must be a MySQL date.
  • s - specify a beatmapset_id to return metadata from.
  • b - specify a beatmap_id to return metadata from.
  • u - specify a user_id or a username to return metadata from.
  • type - specify if u is a user_id or a username. Use string for usernames or id for user_ids. Optional, default behaviour is automatic recognition (may be problematic for usernames made up of digits only).
  • m - mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania). Optional, maps of all modes are returned by default.
  • a - specify whether converted beatmaps are included (0 = not included, 1 = included). Only has an effect if m is chosen and not 0. Converted maps show their converted difficulty rating. Optional, default is 0.
  • h - the beatmap hash. It can be used, for instance, if you're trying to get what beatmap has a replay played in, as .osr replays only provide beatmap hashes (example of hash: a5b99395a42bd55bc5eb1d2411cbdf8b). Optional, by default all beatmaps are returned independently from the hash.
  • limit - amount of results. Optional, default and maximum are 500.
Response

A JSON list containing all beatmaps (one per difficulty) matching criteria.

[{
    "approved"         : "1",                   // 3 = qualified, 2 = approved, 1 = ranked, 0 = pending, -1 = WIP, -2 = graveyard
    "approved_date"    : "2013-07-02 01:01:12", // date ranked, UTC+8 for now
    "last_update"      : "2013-07-06 16:51:22", // last update date, timezone same as above. May be after approved_date if map was unranked and reranked.
    "artist"           : "Luxion",
    "beatmap_id"       : "252002",              // beatmap_id is per difficulty
    "beatmapset_id"    : "93398",               // beatmapset_id groups difficulties into a set
    "bpm"              : "196",
    "creator"          : "RikiH_",
    "difficultyrating" : "5.59516",             // The amount of stars the map would have ingame and on the website
    "diff_size"        : "4",                   // Circle size value (CS)
    "diff_overall"     : "6",                   // Overall difficulty (OD)
    "diff_approach"    : "7",                   // Approach Rate (AR)
    "diff_drain"       : "6",                   // Healthdrain (HP)
    "hit_length"       : "113",                 // seconds from first note to last note not including breaks
    "source"           : "BMS",
    "genre_id"         : "1",                   // 0 = any, 1 = unspecified, 2 = video game, 3 = anime, 4 = rock, 5 = pop, 6 = other, 7 = novelty, 9 = hip hop, 10 = electronic (note that there's no 8)
    "language_id"      : "5",                   // 0 = any, 1 = other, 2 = english, 3 = japanese, 4 = chinese, 5 = instrumental, 6 = korean, 7 = french, 8 = german, 9 = swedish, 10 = spanish, 11 = italian
    "title"            : "High-Priestess",      // song name
    "total_length"     : "145",                 // seconds from first note to last note including breaks
    "version"          : "Overkill",            // difficulty name
    "file_md5"         : "c8f08438204abfcdd1a748ebfae67421",            
                                                // md5 hash of the beatmap
    "mode"             : "0",                   // game mode
    "favourite_count"  : "121",                 // Number of times the beatmap was favourited. (americans: notice the ou!)
    "playcount"        : "9001",                // Number of times the beatmap was played
    "passcount"        : "1337",                // Number of times the beatmap was passed, completed (the user didn't fail or retry)
    "max_combo"        : "2101"                 // The maximum combo an user can reach playing this beatmap.
}, { ... }, ...]

User

/api/get_user

Overview

Retrieve general user information.

URL
/api/get_user
Parameters
  • k - api key (required).
  • u - specify a user_id or a username to return metadata from (required).
  • m - mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania). Optional, default value is 0.
  • type - specify if u is a user_id or a username. Use string for usernames or id for user_ids. Optional, default behaviour is automatic recognition (may be problematic for usernames made up of digits only).
  • event_days - Max number of days between now and last event date. Range of 1-31. Optional, default value is 1.
Response

A JSON list containing user information.

[{
    "user_id"      : "1",
    "username"     : "User name",
    "count300"     : "1337",      // Total amount for all ranked and approved beatmaps played
    "count100"     : "123",       // Total amount for all ranked and approved beatmaps played
    "count50"      : "69",        // Total amount for all ranked and approved beatmaps played
    "playcount"    : "42",        // Only counts ranked and approved beatmaps
    "ranked_score" : "666666",    // Counts the best individual score on each ranked and approved beatmaps
    "total_score"  : "999999998", // Counts every score on ranked and approved beatmaps
    "pp_rank"      : "2442",
    "level"        : "50.5050",
    "pp_raw"       : "3113",
    "accuracy"     : "98.1234",
    "count_rank_ss": "54",
    "count_rank_s" : "81",        // Counts for SS/S/A ranks on maps
    "count_rank_a" : "862",    
    "country"      : "DE",        // Uses the ISO3166-1 alpha-2 country code naming. See this for more information: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2/wiki/ISO_3166-1_alpha-2)
    "pp_country_rank":"1337",     // The user's rank in the country.
    "events"       : [{           // Contains events for this user
        "display_html"  : "<img src='\/images\/A_small.png'\/>...",
        "beatmap_id"    : "222342",
        "beatmapset_id" : "54851",
        "date"      : "2013-07-07 22:34:04",
        "epicfactor"    : "1"      // How "epic" this event is (between 1 and 32)
    }, { ... }, ...]
}]

Scores

/api/get_scores

Overview

Retrieve information about the top 100 scores of a specified beatmap.

URL
/api/get_scores
Parameters
  • k - api key (required).
  • b - specify a beatmap_id to return score information from (required).
  • u - specify a user_id or a username to return score information for.
  • m - mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania). Optional, default value is 0.
  • mods - specify a mod or mod combination (See the bitwise enum)
  • type - specify if u is a user_id or a username. Use string for usernames or id for user_ids. Optional, default behaviour is automatic recognition (may be problematic for usernames made up of digits only).
  • limit - amount of results from the top (range between 1 and 100 - defaults to 50).
Response

A JSON list containing the top 100 scores of the specified beatmap.

[{
    "score"        : "1234567",
    "username"     : "User name",
    "count300"     : "300",
    "count100"     : "50",
    "count50"      : "10",
    "countmiss"    : "1",
    "maxcombo"     : "321",
    "countkatu"    : "10",
    "countgeki"    : "50",
    "perfect"      : "0",          // 1 = maximum combo of map reached, 0 otherwise
    "enabled_mods" : "76",         // bitwise flag representation of mods used. see reference
    "user_id"      : "1",
    "date"         : "2013-06-22 9:11:16",
    "rank"         : "SH",
    "pp"           : "1.3019"         //Float value , 4 decimals
}, { ... }, ...]

Best Performance

/api/get_user_best

Overview

Get the top scores for the specified user.

URL
/api/get_user_best
Parameters
  • k - api key (required).
  • u - specify a user_id or a username to return best scores from (required).
  • m - mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania). Optional, default value is 0.
  • limit - amount of results (range between 1 and 100 - defaults to 10).
  • type - specify if u is a user_id or a username. Use string for usernames or id for user_ids. Optional, default behavior is automatic recognition (may be problematic for usernames made up of digits only).
Response

A JSON list containing the top 10 scores for the specified user.

[{
    "beatmap_id"   : "222342",
    "score"        : "1234567",
    "username"     : "User name",
    "maxcombo"     : "321",
    "count300"     : "300",
    "count100"     : "50",
    "count50"      : "10",
    "countmiss"    : "1",
    "countkatu"    : "10",
    "countgeki"    : "50",
    "perfect"      : "0",          // 1 = maximum combo of map reached, 0 otherwise
    "enabled_mods" : "76",         // bitwise flag representation of mods used. see reference
    "user_id"      : "1",
    "date"         : "2013-06-22 9:11:16",
    "rank"         : "SH",
    "pp"           : "1.3019"         //Float value , 4 decimals
}, { ... }, ...]

Recently Played

/api/get_user_recent

Overview

Gets the user's ten most recent plays.

URL
/api/get_user_recent
Parameters
  • k - api key (required).
  • u - specify a user_id or a username to return recent plays from (required).
  • m - mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania). Optional, default value is 0.
  • limit - amount of results (range between 1 and 50 - defaults to 10).
  • type - specify if u is a user_id or a username. Use string for usernames or id for user_ids. Optional, default behavior is automatic recognition (may be problematic for usernames made up of digits only).
Response

A JSON list containing the user's ten most recent songs played.

[{
    "beatmap_id"   : "987654",
    "score"        : "1234567",
    "maxcombo"     : "321",
    "count50"      : "10",
    "count100"     : "50",
    "count300"     : "300",
    "countmiss"    : "1",
    "countkatu"    : "10",
    "countgeki"    : "50",
    "perfect"      : "0",          // 1 = maximum combo of map reached, 0 otherwise
    "enabled_mods" : "76",         // bitwise flag representation of mods used. see reference
    "user_id"      : "1",
    "date"         : "2013-06-22 9:11:16",
    "rank"         : "SH"
}, { ... }, ...]

Multiplayer

/api/get_match

Overview

Retrieve information about multiplayer match.

URL
/api/get_match
Parameters
  • k - api key (required).
  • mp - match id to get information from (required).
Response

A JSON list containing match information, and player's result.

[{
    "match":{
        "match_id"     : "1936471",
        "name"         : "Marcin's game",
        "start_time"   : "2013-10-06 03:34:54",
        "end_time"     : null             // not supported yet - always null
    },
    "games":[{
        "game_id"      : "45668898",
        "start_time"   : "2013-10-06 03:36:27",
        "end_time"     : "2013-10-06 03:40:01",
        "beatmap_id"   : "181717",
        "play_mode"    : "0",              // standard = 0, taiko = 1, ctb = 2, o!m = 3
        "match_type"   : "0",              // couldnt find
        "scoring_type" : "0",              // winning condition: score = 0, accuracy = 1, combo = 2
        "team_type"    : "0",              // Head to head = 0, Tag Co-op = 1, Team vs = 2, Tag Team vs = 3
        "mods"         : "0",              // global mods, see reference below
        "scores"       : [{
            "slot"          : "0",         // 0 based index of player's slot
            "team"          : "0",         // if mode doesn't support teams it is 0, otherwise 1 = blue, 2 = red
            "user_id"       : "722665",
            "score"         : "3415874",
            "maxcombo"      : "411",
            "rank"          : "0",         // not used
            "count50"       : "0",
            "count100"      : "11",
            "count300"      : "425",
            "countmiss"     : "1",
            "countgeki"     : "67",
            "countkatu"     : "9",
            "perfect"       : "0",        // full combo
            "pass"          : "1"         // if player failed once it is 0, otherwise 1
        },{ ... }  ...]
    }, { ... },  ...]
}]

Get replay data

/api/get_replay

Overview

Get the replay data of a user's score on a map.

Rate limiting

As this is quite a load-heavy request, it has special rules about rate limiting. You are only allowed to do 10 requests per minute. Also, please note that this request is not intended for batch retrievals.

URL
/api/get_replay
Parameters
  • k - api key (required).
  • m - the mode the score was played in (required).
  • b - the beatmap ID (not beatmap set ID!) in which the replay was played (required).
  • u - the user that has played the beatmap (required).
Response

A JSON object containing the key "content", which is a base64-encoded replay.

{"content":"XQAAIAAxBAEAAAAAAAAYHwJDUQO0AFVX2FOrBLOurDaUjNcwzeDGkQtz38zEbEFpZuM4MpM0yJ3N0oJX5y8OdbLhhy7aiayXgHl\/0jAmRwVRqciqUc13xh\/vpW7nyfqcGYucj3rljHxXReWfnl1K3TYC+d2859vxwkUvNkdLN\/3BeAT2ltauxpFOD3GDclboOkexvWhhfNSPc4kee9t4mvKSu7vFVlnoRF7k\/pEZKh4MrZIiEboB9bCoH\/ubR5KP+bKn\/uFzgKDocRTIJjbSel+04J0On2RZJ7pB5GoZzP12M9X6NXU09xsrYkCYHSZyhlbIA6sA+5jAGFQmxKKEiErF2Kqbaahi7RcRABcT5anMEVj\/nQkDVUMy38OSy0DgpDjNkOhb8BwZNKNBvAgL1IevnY4gz\/bgWKKkdfs9Z8HeNPlno0CIm01KXZiWZAf0B8Ykmcc\/OmEvMOk\/GcrQFA3mxeq882l5ETmZGquuHRCEctHhhZspHVklq3pnxH4LshAJZtMcZLNg2aGFIEP0Ik6zyo3Lko7Wc3Lzrz+q\/95rhf8ECBPbHKyEqCtT2poy5wKe3R5OF9FmHn1LXwn43IOLw\/qutvtygI7mZoKHVY0sA+M4Eb2dL09mBVpqVDq\/+c4Ia4Lip2qfYGVECEbKqlWlfFYVq82115pct8inaDfJMdg8IOPP8upPAfxCQzsV84TxtnE9xi3++HpOPgjzgFjnW0T2uQm3HPbC45UIKBtKruuO3BBeJtoZtv3Uc0MqZmFlol5uwRQHhjCq5Ezg\/myqjC4Ep2vTqXd\/fV5XFdVDwXTnFqevPeXxDV5PxK8574DFa596Xrx9QwqkGVN+eCt8ZEchx9Uvm737jU5\/8\/0\/qzfrR8aMlZ0QSv8iPYitqf1h2OqRSrP4hML1NJ1Gz0Di1SoqazNUjTKXWS6EDWqtiPlsoUo4gpgagNcirE+W+Kpu70Szd9DEsbcv\/Qcuh9z\/HvIIP\/66icWFkF6BH0VST6CzjtiFIwbBihxp8mfn\/1C9J1AvosQUNirBJu39TAYtbWp\/1eMzkluoW5YuGpM0yXYpaXwpgakvlMXbWWt4H7mVtnCf2KbroMj7BwW3SVx0v7Qu\/RlbVykqEt89knd7ZiklwNKK9Mq9UrnYqKdFMx6tFDz0WivGPlulgvJxJMz\/T3VjpcEwJu2qDlEtd2cX9emjhvF7iR4pYOgPEexMYyzBLUffgMY+rDiRaVGaVbubjuPimweYKS+j8o4\/uWanNl9lk41qnJO3ckf2024q1LrQwupR8EZJOutZP5hkgB8IGpGBMkL2iZeSbRYc5uzHCUFhnZUJZk5hL9JlHL2X\/X2z3ASWk8pDEO+0FpKp8abisOG2aqPZrRE04Ff\/MkHFH5KjC5zJiIVhIqK+eS4Hx0Sq\/NG2pgyhwnA3iO\/6TeBxW5CnEL5bt99T6fiLWQ63TP4aUGLGfLrkwwWL9ks41F2xi87Ls6qi56iS3w94bn0RJz75+6gtklBD5xUtNm3Yp\/JDHeCJ1ncIeqfVmMTftmjk18EGYxDDDtD5EnPzV1DRUlEB3hCR4AmSvUqLQzKhVnwbehSf+9XC4A9LE\/6fbs9c7A5mdCeaOSjtG8P5pm+gEU9cfzUsA6dUm7Ej6kwhecMQr5T4ABvECJ7ZI3R41N9Vlnthvsc6YF1UyIiYJbtaAlzO5CBxGi6z0n6wWrz4etykbd6Ug+0UxJ3\/jX3qx0yfg0tn7xo+gYkhW2avIGXjpszF5c\/YBkb0mOSX\/ro7q5FljD4p4oX\/pLIOtXxdQMEZBILX\/SuJaAkyW+j28hAbSkdOudFDp\/\/0zSylHvmbHj4zW4TN6QoSzpM3lQc8Cb6CtlFRJVGHLcLowOO0OrJIuLEfwmnaZtgPGsU1pqrTnt3mItB864XsW7v\/3q\/6mFIG83YSQB059iEKg92\/PeoQZaFC49G2AWlmH8b+GU4SAanVO3hmt42ovwjoEKGqVJLEiZ0Mm9J5YMfGgU1EKaaCj7+HenrgsiWg3q7\/2hjNF5YjxIeKlMXrZMunOTef3YeQB7db9USMsFFvEZHKA1Ug0UqF0Diq75u\/z5WbJpRtfbhqp8jCtNl9DQHNkTRjSz1ajjMWR1cbeCVSGVo9EhTwgkyF26XKb9JWTou6sDxMzArbX4VphEil4M5hkcn412ml7zQuqR3AkNs2xGwPFjF4dg3mYDNHPVuNMuYQ38dpgNvIpiI0W0JwWNJ4JhltM+7Wpu86Ufwk11NTQLhV2igwaWz6ejiEUFmE8e4kF0EzJ1rH5OeVX3WRJLY81zmLoZqOftliQMw5mBxJ0pTQjkOkOyK8TOCDRtyGG0cKmTX64kGua4zeov6xN9rD\/NxSgpSzu+A\/\/h\/0C8uwur\/BQHy\/wj70U0OJy92XxonNdc1sWX1F6xRuYI\/1bR86X5+MdBpqfLRJsZh3TrPBBa43zlqh6zn0A\/vU0e02HTaWIJBFTjh6sn581zkiT4goUmIeVkYl\/4nLxrvEWR0JQL+lIU1d59PQWHpsNNZnJw3biDNuo7WiU+whR90iSfmNPp8ui3yiUN\/ctAtpzHv3UBrDEKR1eJfDeg+hjTxLtEsuKAK+N5Rmv7c0+Yl3OsijSMNcpEcb6almlJqi7d8txwd+pR5GtmYdugGLAOLCfh0mhm5\/cSxMNxBBVa9P2akTeTwqDOI\/3X0hoMqqoLx2vvyoSU\/9BwM+51x4iMvaIG+sjLpUPIu11yEWBwF4FjuBv72879ZPtzxRQqSVia8Ro4N1eviNJa70D7Dz9gA6Q78I6DPiEw\/nDxZdv+3h5oQ+EqrE2r9CqUuuQ2aKsJBKfy3xcXoughGZcT\/3JjiYL9IkkKnsbKUu+WlFdUwAAIqoqGzl2\/z3Pf5lE2bvequRcXChIJT0djVXBLPFna4QNcOnNdM3njzfidbHDIteZrPqAbnUIz\/v+Y+jhwinth\/cZo+HD5JzGh3zfSruaA0LWw1rBHtxhWqZkQJKzl9+Hle6qiOqcXWvxBMzxHzyQZ2stYERp0luVuRlRdQNB3vMiFH+nPjMB0OEEb2YnDn7hrrbej4YgsTJvS9saDhaubPuew+70bpKdFwFIpwqWRI\/Wurm+Qryh1SOTdJHjox+h9bbvff8JFV9YxzFMli\/iGUEMSNeNgdmf+k2XM\/kC0nB9kJBA0cVJ86iLH2HGjl6QlqstRdVjLL6EaqdndmvPs\/wuTr4itYoEssVb5FYO1E8f6WUIIXlvAxPWzK\/iHJlxw\/EiQPVwPdpGQpVTfMoPUcKaybylMRoZTpm6+aTYKnTJ\/qAkMVD9rBeKLmTkDg87WYG917s4nCGoU4MHa+eZmcFZeb0nKhh+CFBeOv48v64NbqcZhoNAdAkEY1EbcBBSn5So4AYgr4tQ4QbHDtFr\/cDapzyfJRnmaDM63SWqODsgm0NDdtZex1mLqu2VVu5MCwU2wW\/dnT6cuEV6+NsjrAzR76E9B3cdF\/yvS3cZ7nNz0G7bnRRdtZcioSBMKUMqEaDBEtJytZwkrYPWDsl7tTK31a9hdfk5svKGCEu12i\/4eG+\/V8w8Cp7FEkqh1ty2JmgdK+E5nJbXMMlGKF2ZD91cS9UilXJ9uplceIV47472rZt7kavTiDmTWP6KAV8La9EFHmdrl30OYZMgZoYtQqiCK9MWEXzy4UiRrzdAx9zqcNIGNNfbK+Lu9Lq0cAULzOt1aMBo7wWPpFNz1bw0zl\/\/fOU7w5B0S8ntj7vjYUNw72kKkliRXGsl2WcnZCvfMaN1++B7FnuGrPML5FN0LogdEaRra6tbiIk6ozRuyEBemQRQVxw1TP7itTp6ukL6R8GvFBMh6A83VbBPBrHACf7Kll8GIrQLDeKi6lu4bHkPjmqaqdTK6AypyudidvlFLzj2I0kqO\/q9BcELhiZe0ryz1pd5MbQSpz\/drC73JQEQfXBZ29+kodxs\/T9\/eqgglHuszy0j74clfOJ6fZhFpiHIGnxR8hGQAwF7c59+obiU3eCqrE8t+KtJQ9QbRLxfDj80eFz04aQNSxpNx3iWIq7IFJNcZaQFdKYTgn\/j6yTeao\/i8p3Fdc4qicYA8CDSzCSR6eHdmdU9moT65c8p+Jy8bqJaJwsAJiQZxmvE14FilRAq7nhro1kPFFf0PWVGV2em5r4\/yjKL0Ks\/7M65ev9l+Mc+TQAwswTGdZT5lEnYEbkRjqorEA+NsudcDiy2C8rb9\/RSHNQRRuxuLbWCeq\/Dfuivz1tM4PjP7o+wXUgfB9pCm7S9AvB02Bs+krXa8K1d367m2APlYegWEZjzspWWlnEDcsaPHp+m+CnqPLU5V9+KuDJEWryPryT6GvaT+ARvRlVHMclud8TQpBARsAl851SYvNvKaXGzSZmSH1Y+MrzZNRHxB8WW\/0HrJXOrQrZ4vf7D\/2TsozS3dLTqMHWrQkPbbV8dozdP5P+BPlF2hiiuCXlZZYwDyOO+TzemJgKu5sy8R8egkmlrkX1U5Tbd7oeG3T3dA6OIgmhIZ5tAlUs4noPBUDWJBf682kptqNYJEm\/XzKBLVPt6iCb6RZFNzEMhQJAzuKMR4mXWTidiY7S6hTZ\/y+l0j11vm4xTcf2HkwOUWPMOXwDL8MhlczdDq2PyR74OeuskjJ45t2Wq0FNgYy8mM8FzeCZxXtZt9tiZAwAJiDVrzpHg6UF977stx1ycoPnj75F2GpF8vc4tpA4oTVdJ0Sq1+zL6dBKEuqyyEJLXQDTLHJLLcY8aWbUgVDL\/m1XwDkRh0C5di6TN3pNXrT2l5yEAY6pcRJ31ig+lzKpK7XKAnjpGw+6rkpXuxKAaliTjFTGlRcQ+IYwGAEmemxRndUOAABm6gUSsiw7InJcFwcGc7Y\/XiuKyoM76WXPGQCp5ZMl6nbHFAAss0xy8z39\/UZwidrR2DYi9i2DDn\/YHRds8h6oJcVDdjHpWE+B2hKF2aOtpDWm4lsRlH4b6AKiuZJeLwoXKS2llbLVbH3jzi6gesY2MPZMZuwzocrDSrHwSS7fquQOnqxQclqe45O5lbPNAZMAFt0iyLiUu62PtJRbf2sRAvC3RhEJ5\/ZSaWP4uCWuqwNIHClN+y70QZRXGr0hq9H2D\/3zO6xJltpWibBO387VbqyqiJS3is\/ZzN1kwYGei242TmKX9J2CWlP7BnXKuuXROk6IqhA93TMcOwLvcMQ8\/SblS0rbqL9ywi7EqywAsmFRdmE9o5LArurdxTHuN3M8zlHPSYcOOLVw7COoBnA2yafgxpS8RBY1fZT0S\/9aP+6\/f5lz14IuN5ChWNktFyuJCYm0xYcejYA1Mgl9BgVZRizq19eBX99x4+nE28mKOhFNrfPgG8eQ1kdQc1VAnVW7pH3tvKWEr9F\/oZyypZZd4QLh3fbOG50hJZm3vIEnPRJO879XTjNeIWERueK6B\/vGsFyBkr8vJM4rjsNA8xT0yADMVbhknBXkvXDcY1ntmE3Vi1kH8yH04isEr7ahnb67k\/J2B1cgpSknLCZSPpscjnBjSg4CcAvaYs0EqUmgAoxcA+MS2Ba86EGSVokhd623qYorQbiECG40e\/AgiNpEMuoyXDzsjvLi6iRwPpLaoaF4KGGjh74o22tP64yt+YemV4c5KKBQHzq0h4D\/ZIKA6bgFfUXl2RJFzCIYQlxpbJZ9TMGulukcGUVf\/EU4R5Re4iVhWhGz5F\/Cj2BzVFb6YtlU\/6BSm46gA3prg1Dh8ExfsoNkVYbXKWbxHfFCEJJJzQISes\/6axiyi9dhViEYuGH+PnikSex0kzczsogWIs46Y5+bpAKDgkefSBL+VbWIf6AJgO8BfRB2Abu8hio0owpfA6Ll2BhRuYD3zZCYctYFtvNXh702OPPMtNmIaBuFLYBA1IMdchxQ+xFs1jHeY4nu7sUVwMwSbOJPbWhq4FqfpLawasnLzDtP6IkKMv7V9ssFk2YqfmyPw0UlvCYAmouifr0EEe0g+NoWFTQJxCCzIBjGc5PqGjUoGKlXxlQUnTgJHysbruJvTTJleMfG2oHy+42MaC7wwRtiqgjpvO2RhHj+vjTi33dGNmTymPheJCjdLba8TXhJFa8Dz01go3yH+dx\/wyhRnvK9Zct5YE4vRkmAZ2TuMkohurMBY2kMr8xbXNnfPhKR3Sq7OP2VpryzkGsoE\/q5Rpmb22u\/UKXoPNEHYfS35zMFFkqaBMygpy\/s0oicI4iKDABaPh5SjzvcvGUPLrrtbrmlWOJ\/hX0bA5dxpvEK74BO1zRUHU2TWcTYT5OJf0ubuMaoxR+kHBubDfQulocgpuw6lQvQ4rm+bGK5fNq3NwdvjcO83wCSphlcrp2YeXF+K3s42W+MlHlZ1AQVc7VW8D5A58W8Sj4TDsdNZYzrTKTvWqzWhtku3E5urqsni37NVoYIOAKBLyri6Mf4uC54XmWoowl+qMJi0iqtSAB4OtECLnX26VBimMi8nVMPi+qgxMzVlAaeS6owrgTRc0ys3y5+M3iF8TWFdSRBlZAu6n5TZ1ObH1rlEyef5Vrna4nzUI5mSyws133mD\/t1GrATq2zXJrs+9GjZeBjP\/wJhEBWzvWo6HE7Mx2xTH5Vb24eEKrrXoevH9ugvoYWvg5fWR1EleArztcHABIHFEVXGenvHDxSL6VMmXkRva52MsF4E1ivK522Cw6kgcFPXdAlRo084xintexHJvU0q1zmmPkweIH\/d66\/WIfKsVPLYHcDKeF2F5\/R1DVz0zvfV28iYyNlabP2QmwlC8HI6bd55s6H7hO3CuJOq7ioLcevSY9wL3BCF1cWyMKcvN2xWt3gkZ6JBWoknoVeqxBQJwa\/r5HO2wvb\/Zf8KgLooZvTfM4WtWpAUoM0IEODtWmlWJr3gL11xPOFBgek1Bbp8CMopmz3\/MtKEyeAmkr8w0GDdzAwRlWC5IbTK6Z5+bHU6GZyulEpKSZEv0GH8DR5gTHkFD7B0zZkbt2ttBTy\/zP5CWPOjqbVV4NB1\/ttMOkt+r3NX6hpNEYE1X19WpHbQA17m35tdBIYQgJhMeooDAlOcQf5eukOibCe2csdgWluSyakOYCLScowCKUzlo1x\/jym1Kj0MXfb+i4i+NIS+F+qEpUn9kRYwCHoQigHig9\/B+SpE7GhekATLAD2tpy2ms\/H5DiiKP+7Wqq7WwUkgp2kt8dIZ2yxzeOZ\/oV4HM94z3XXxTHDwlmSTWiXe50UzTfMNRU11tdZOpHn9RE\/+HqQED+OIKEdDAoFhi1OYl2v\/WJ5aKugeT2dyZaXCW\/PcewVO7pF\/wZ3W88rTCj8I5V7T10B6+lHihZM\/uUzPukQjmXqAYAmUvLRPPRO9tFwo261v2zmCJpn\/2Mc11SnirR8EsdrOmBH1jpO0OA\/cvRkuNrxKnexF6xLnZF40a01mDv37pSe5UU1J1X4YVx5HQhI0oZE8N47G4oeh\/n7WxFL3Q\/v8X2rLJzLbmydyNwJXL13aGDZ74cGbvA2Eodv3BncP5pxbrX5l8otCoToeAGLz8Ovbgpeijo56fW6ZY+gPk2vtroQCDQ9o9g1OlKpUADQLqau0denJMVR5ZifI2PEObB0r12+\/6r7WwEymjj7rPhQH2AwhZq4FRO9FMbaKBbqUzEeG74lHl+URKfneq00NXJ8zYoCM6pdgRNOpDxW\/ZpEQmM+T6RAXSkkA9g0DkC35VTubVuXLE0d+iWeOFVlZoa0ilIOzgzDqhuRGoDJSqm5p7t8XFo3AOE51fRNA6QoYJBLbL1Zbahu+VTgkxplhubKecNLcWe5NSUvo3tkZ78bpSQLdXVtpQrSCXQrZP8\/L0ddpPhGrunUgB29IbNA9N+v2Emkf9n4\/pUx77b1+HHWruWVObip1Urr1ouWRsoalgO1zdkFHh2PHB2Q8rep87+YjOQ5TWMR3Z8NSNZIn32JHdhIZAbonWmVsK2nckVkczPrbjtvyHbMBzOHLtMcvaeICsw4f9Uj3EqtgB05NtEO0HZhMQRdmssXD6Q6Jqy629i7imgA7Wo2ZkT1ylAK+tDJuZC1a5wxoHC96o+m+64ER1P1Y4GuJv9evWskw7n9RLb1xYTo+kuJ0g73GhkEQucgq7cm7mFBuPS2HgcCBs\/t2UJQb77yaVqvM7UeYIEpKmLD6q02aY3F9HaneUWAadlVvQfcOExeSU5NeO3HZEJ+7k\/pknEZE32mnbkVVWu6qr17d6C4AaFL9TkbbyctSdr5Key23ucYaWfInOzZ+RQBuUnrifdl775+s21Spb4uyV5dMCQI4nYmkdQh5f4eeHX3O1ueJ3rl2eKjL5kL1zLyXeHm3Sqqx\/VFo2RRNouMYBZ9FKR4li6\/0xpW6xXB43pnteUJmM3BzsV839gGe0pIcnbC1xyUj2qkuEGuYpasZK3yIRztPbPkuCrD+NZH0VBxk3WppmlJWJOWz45v2V1+o7GM+ZKTpoD+me6b\/Fk+EfOsrBWnZyWgKBCSz+9N2rJQy2sK80TKwRonwhiGxGl9FqNn37mgXcLpjgZvrYYVYze2pQLKO0l0I0TuE3bIvVFniyc+L6jBCkfu+cTlAAioQUUlDd\/jRdi\/K\/6sOGsbnGD2rLVW2DGzPRobqNOzQtmssLnvAG6MnD2t842JrcyhRjUF\/fu0WnOWSPpF8gjETHxBd8ZGxzeLU0O4pyQQBGy\/NKO9u0zSg3c9uZPNhMbbfQK29aQlGK6gqfMy+1noSAWE9BLpMFdyxx+OquGd8XOyTty4mdU0aNxk7eHLgHU7nOIdJQIRFv7A6vWKj\/CWZoeMvEkosGv0arqL4FlrBoZYFF+bBK2uSe9qeDLqPwMKE6tAZ3Sx3rVRl57uPpTqtifoBndi4vMYfu4KZWYMIG3dGhJYUYqAE5mnW99\/x1\/dySx6ORCcqp4jU25oY4PqhgK6qzsamcjNhpEO83uWImvPa2TSytRp\/jeWMANqWu9KtoRhUaCwoQrrLfqpvjWyAGLXVzIwsMpFfrHuaMcVodglw4ZJgbA7f02pnmjpHU\/Vk9wk1b0I7bnbBK3ezvbUZSwPTdtlkOcqEajXbeXNNjgNFpbNyaqar0ULy+HQ531SNbGd8VyIUcat4R76JMnrxKj0i3vG2gc3z5ST8RLTivMWqOTrvae7vwf72sDv4XmDu0xwifSPtsJ7A8qQxm1w2tXC2+PXFsMifhHKS7vKZuW0LEPLPvydEyBeHAq8q3vA7EmQjO0GoL6JDPjmBJDCUBcIV7C1rJbdv6UPQG+cz5bAUMnXo5ECGnjk1\/\/M3vbhJpxtfAaclTIe9nZdJktrB9+tlt+kxCXYAB8aWmxnUB0PsS8NGAJrDWWr8cau3990NZEKW0LG6kxwLZX4vrGD3CM8KLoVl2b8n8nI8GUDbueBZrZB2ZGH7Q9vrFdCFffPF5YFTMDReMycK0+RhBpKeTDE48upDGErBCkrnlGbCyGvWhSpwT11tKrZ20mqaeBa2C1cf\/s5mGIPCVfMN+xYPvvhyC5lkoSZQNAT0+MpavUUV0EJPF8GWHi4yrbKjecJ8xUyyplvgfFaLv6MNksotvYP9nW\/diiovC3mIpjUAnOrBRDsJB5Bj73\/gLHs4byLxvBTGkAACKvykWiYb7h2divAIifPXjArQYg1sT7Tx\/j9eiTWS0ndniREBwYIkRL8HdUg23cIneLs7qKov9a9V79pD5fQO2kEx2heE0qoY25f5e7c6SDWm9Z0YBx6BOVwNR+yACx79XKlk3NtaXN6PU9TGVx1JerRjkw6MvNeLgE+uuCd9ZGyxsTzdDIuTyjcP9Y\/srwpJZu3tQYdGD9mvEVG1cZr\/IeikEq0Dew1FN\/YJ6x8VfA8SWtWMHFu0MP23JeO+It1GYt0VGVTbVVw55fPwbZWyO64MK6fhlnnPUb8yB7rvYZGIa29rglixF0ldxoziMI27a\/3A3vdFEQLrK2o51LGN93obW4ACltbtPBcjEiFZfBVGUqvoiqISUOcWrTJCvPjejIOgA0vZOhXihhxXXCmOCuKQomMC80JvtTY6Y4TlcJ0GGoP2952qgl2ZpuWXrVwYiIW7nZ3xrUUHpvzP861teCtP5Yi7TBTg3evOsr0csosJYja9sOienBywjYeTozovrTs87wZXw\/jqDxb6E7vj9tUM+76IR9JKJGmxc1D5HtBDe\/tfmW79XFpKZep94ad\/3wQA84LgbherL1Xt9G1sLvGMoPsPVHZzI1oB3HbiQzOZaAf6td61r+6n8fOTlP8pcVStVnT\/M91OqDiEgci5AZFLLIS\/OR6jtvyR+OUMrpAPp9fwgC52oEco27lOml5MOaIkkCCbodmn2\/k9pyDTrSyd8G89DgrPLi0uqC9UK\/bZcSUJh\/ZtPcXQcjgikz7Rz4Q2TfllTmUH7rlLtuQeBW7aLjk4Q7AUj\/qGG+4A3SanT5Nc8jU1sDajEttkiS5R4m\/qHRrTBDeU3EykSBl5tQJv+H1Uo7LbFjcIHoIxfyEUB++m4krvycTUF6p4YDoAK5WigWDYvN3h9OdwCfeC4JnY9NfrJVfXx7lsv\/MKWwgje+Qxrs1uAE6TB31y3KDD8RRoRyASkQECQ1p4OAihaON7dY4rRTYX2w1wHMv53\/cCeKIJatGup+zhg5H9ekbNEU\/Ql3H6VS+JBU3D9TqYVFSr0\/2tbvl3KEUDDTO\/YHLJQ0gKSaRA0mGvsAh9vP07cuieXoEndcmGktbTq8WnCUFHYjW4bqnmVb9sz1BPov1QsyQxSujLOS8Pw40xzCpmdVntHDqtoCzy1Ugk\/t709iLeL6tQZ54P3ZuLQMJ99fkPs69TRGk7innsW7W6A9nuhX9SicwLqK+mjdibagwZ0ch4QnwD49EMCnSCmSAOvEa7hjN81UMGe2ksn5p78zQctsX0f0vqBouUs38rckVy2m01PuzbUfTxWaZImnXU0PB1GmGFj1mmOScbgmLSi6qc0FYIo+OXYf3m1Ia0WrPtioh148uOIRzzS+BQxJDnt8sOpCEsvQytBxofxkOWy\/D250NVzvzxqczlXQLLRUMEHQSbELvS6Cl5Ds61pbYTaCB2kpQXw5yWtwP5qPzYvnnWblbGXG9675R69hcG7x0scfh9gR71B7yzcDywUvbwjGGjHgg5VfIO3NeMyx6hJRWaAXjl8tOhC1wH4LYJeFl3VTRLJ9hBT0J6bWCWdkGHED5nK+wIEQF7+cPEok3xOwkrWHFL6K4XUtWkE4gAD+nj2ye2w1tqKgzLxni6xmqrwYK2fkmeQR9m84076SwPSL2ixz88drFJyLbTr4IR2Dg4hr2KQMvjkYJ6p+ORIdoWyhCtsPkYbmxYiL3rBVTLAcEsTglwq0U95LqPcDGhZ\/chyGW1MBehyiiNktFi\/1puwJG5ifYb5uDf34z3XTFIzM16IEmbLJD0Zwp4dPAep6IP2v7V5s5WV94KEKH0XYd49LyaAqr1hBpmf2+Jux9623M0qThwjg7qwwLL8yG176T5jBsvnr+iLq7PRWOsaIXRxt\/bYnJdF9iUzM2oToJ1ocbUDgDt00xEkkk1KK5bAts3N+SO0sd5KcqJ9xhIV7PdSJY\/CpZVjnTK8RbnN2zP49LGsBatX8EwcZav1PL\/OXWz5E1RjGxcmBwV8YT4EsfF2PlOw98p\/mMjRm3\/VMQRxtJIMxPA7HyeXim1YtoHhnikxP+ImzB0wQToVIKETXXnrHO1D3sN9GZEgNjSnMj5HFg3Nt7M5jbyqGSeKtXHxKVcvr\/rE3MnPFV4bDg+CS6aLisq31Qpn4m7Z4kzhGl1B6SL7udQggNJvgXg9qzkowvSdxHOuvoVnmFPNA97SCYkCFuqNsxw980YoVkK5BIplZzhw9zgmf7YJmKLdZz8mCqyCAtCyHehtW2Z3F2grMJmrlUdJAfSCet3U0U4ZFPRMH7DGxQPijim9OeYYBWU+rKRUB4kDH5HlJdLuMZjY8y8ECXYQc0Nr6StyiOD47K+2FIuETs6ofxCHV0PI0Mn0OKcP7EgBS7ZJp9OalgZuaplM5v\/QQs6bu15ACOFzGpXDzMgOfEVbyLVesLaxcNCqet8DgIwY3vKtKfhhXXvlwnVKktai+RX4vEd7M3Cf6sY9HhB6FouxJUBOlksMHMy7ZfIi0bM9wtEojwD7fZAopag+02NFKykvqzZsPmKBBdzynDOzL\/qnRxCWX6S35Mv6hgEPkxa6+cLQgjacS2JJVJLsyzInRbANdLaDU181uddKJA0wVtEI7CrobEiR0oREzS5HWfB\/jVb3q72aL+\/tcLubdFjVT8ZGZDcEM7c7UlBo2wDnKJjMWBqT4mSJFA68PZGgt3iLe22NsjrjS5VqRTDO0aUntSxSeu9R35MG2ZsL29JLQTWOHRdsKfG2bsnSfosj2ZLwq2LXn7YM4KBxMQVXT9wiS2SW5UBna9uHEXPNXFxkhYC+dOSt5sYFhx4J7ZIeTqgZtMHT4tj\/wPEYp5Eyi7RQfge7oeqKkiAxyhiqac5777TFpGTUz88Ph9CS0Ho0AWWbJ7Q775ihnvljYe1QCe6r8u+fhTsKu6fED5fb4jTU0v75h3NcCqMnD0qDl8yjGNpy6q779rjNkZdkK7ZHZfHWFCfp4Xb4oL5vL90e2boribomPEuEjLcb8nRsAbejj0v8ouFrdILPIC5D+2UBmwGBhQTUCARnZdEAGv2J2+HPA3bgnoTPOJEVoBavtbXDv81NX+sKJOJETkyTCe8\/9MbJuH\/JlL7+CKSkDZ9zPT31ze7R+l0J6QFbPsHU1onrWbeoObLS+pXJ7f1Am5lpy1a7ZJjyumRi9Jm7xkrYk4UpylWu4YfyVPEq7N0oDwrQf2QONGBO\/P8KZqh8U\/9wPtkOOvt7lkw9TVZwBjpoC8Atr36CKW8i0HQfoD6WZ06UGmzTHy63C6gHDVpJjZOVGpCfD7FWARxlZGnpQByUBwq3CGREI0X3xN\/oIyXQmZBWcn1RYxWETwMKltW3x2EmI3BBRgkBh+OPN\/YMtlabbKzXZGA7tcX0OhLwYEwm+cG9K7H4gUFTH3n0mN14l+Iv4LyJWwaE+evKKrBjcxE2XQf\/+DovEKhQVxbnJJ6b5IaeS11nUWdrQn7Wqeb8EVJUMyfWAgeTeBnehNUSU0ycO4DaxvJCoT9WxjM++bp1axf4JricNyk9XFs+9vmsEfyBwXVs7KwEXWdB3Mz+dIwfuDbmk3Mt5cudfzciEbT3Uv3KJgKXLmujMh7q+nlTSCWAM\/J2aTuw9jejlfXAhgRuxn\/PVr2pLy514CN4CXCw3FTvgsORFJKuz0Y5+0TVqCY0\/lyE5RcoVF68c2LyPJCjzeofC08pISvOR\/W++FzeWCIcvu6yngXGwIKdsdGv7Yiq31I\/7Ty+ajzENhJO\/WADLniEgBrVaIq3mSbNpI6Ymn\/wdtHsacDFiNHlHcjymGTm2y9y8RV6qStiVu6HlwgvNTjjPGAo3OUie7Yuiv\/QD+yzHkcJScoYIHm5Kih1CAUCeEyq5FlT7P1Oy3BXFWt0renkNvYYjHofJw1ciFUpJkMlRTNfr24CHi1qZtGzAaJ3k3bSqIWE3WYLecxZwrwNmKVVQBfEBdLX4LCb4q2144YNsl\/opq3byagKN5cMAh3ildynjYWALbGm8yjX0u7WvMreDKzJuSgkc3IwBvYJNy4h8aXTWWf7k\/HR2iqWhnhXUNFlbqI\/aTC3C78MrWIxcKWHFm2avuerJa5h\/N5S1K0fG3dR8zczFDz3rIPRbPAvgelDUUKUZDtDshmJBB8+lXtFiyyI+A4BQolj3pDCZuhY2PKtDy8yzxaqEj4XJTa6zlLtW1+RGfgs3aAtycPl0uBa5PF0mKVqIs7rmWTg12vkQ9YWyE25mpbJyFIgjbsYdv1\/RIdTq1r+ykLVLcEIFqvOPm1bDjRmwbAb0DUDmnha5l73nYTV1E2qApNl2VnQCGDxRC0++rQgh744mcUNJ6AWALV3E2n7qRmL2sC15kFxWX\/CoFYnEMOScvuaavyQt3YvoBz22n\/s2aULnqdI2YoK8PgEz1uJv09Rx8C2ckNG0yDp53SBbcpAfbP2EGZ2RD4jpmDEwdy1H+jhsG6ay0W2MkH0gBpMXiV\/fRZRWc5aweqEQ6t0zqY7ZnXHYMZKUyIKL\/wK+UpDBrB4NNFCzZc5BSpZcv033ZslMS3d\/kpaBEFGSiuKvNsuyEBBhF8MqO77Do+gOXDvkDnCMsITGU5FDyw7\/Qul2XTjN6zHIus5rxGCei4UKtOuBOPRlxhrIy6twHsxIUBwvZIoHRxqF923J8ltBWajFuLm4bnzd+h\/RJm\/ji2MzF3\/7QOQlu1m\/80VtIqI20z8tH6yyYP9mX9hEtAuSDtgMBpc8yhwZAKlH2kWLB\/AglZrGh+RNmkfUn3nSjMlce9EgzIYouGsaedqgEOBreiPOzHdnL0gyXlGC2DbHLNIqHPPRR1fM61Ip0TgMoedE7MGKNnDMx+TPpmsWKqtHcEIDsGquTjvMUaXukfnbUFqaMWXLrLfdtoJyJ3MEM\/eEChEUR+2h6u+Aw2PQ3q66+riC7\/q2gXZFrBDvCs+DkYTbAu\/uuOJf\/IGQiw+ZFhBvny2VLpAsZQREbIi\/LGjojoDeDH\/F0K3BmpAIQNOs8glzYEZK\/P0crkSfPeFMYZE6+AuZOV9u95k5x8k3ggvmnYe4nPenhN2fgFsKyoe\/hGwBNQwJAYsSbpmCWXvoeSIPnm6DoCKJdZSeqpM7gnKPDJmjcEZDTSzIMYVBIexaQGPhVLBiBIbyxxpb7ke0KH0pB8xo5D19KHb++ISZxJE4tt6uWkn6GG3Zaooh2Y1YfequKuOs3LLUljQraGlG7BXESoxdZbCkJVuujSRur6tLegZ470pePGkjAGedx1op7QJe8vlUyAiP0YfzI\/lFzfAh9LJZmnSOntYGCY7jqjydMF7674OQ22DdhVaY3HwRGlomT\/tm3Zv+T7ewsQe74nOzqPe0GLAnQ9Sypg6ej0dPtUSO2EATGloD1VhupyS784zFb2HliuNsAIWiTbDV0Smq0dtItLaeK2tIHR9rV7D1r1Tf3Ni8507Wqvnk7yaC6wkbfblJuvFSKd8l1xV1NSEB4wmS6+N31ZlGWKfRUMow5dw93V7ZBZ8coG4Xzf1Kn23N\/hLIkmNkeJC6c835Kdp+sGAVLhQMUKPzF9mXeAukIGIM89a2TfoBFndPQ\/hp9FA\/XQa2VzutsgrfraSjrEaEwRW\/xP2Cl6mkWTkMo\/XIOtF4\/husMPYwKANBCl1Vvn9Wctd8q\/Taxa3dzK\/BaYeaL9xdnzeygXMSDd\/mL6hKbl6uifEADpE73BMCLnKvvyhO5qx6ghtIkudRJQF2XVsNlLlX91+Wdf1TaOGXOZ5Gml7I7lGQ\/gRKwR+ehn1jod1tS9q8f8dCt7FJ+hd56J+iKLMvftHElCWlHicpYni+ZkIXZw287P65ok\/RpEuFSH4VU\/lxaHDsh8HRuy+b4lUExcMTurpLaDUupvrpGZDVjqVk8VHUj15dxEN5wO5\/\/lsaRYcmJfbw9alxqjqk8X3+BGznU625\/x3h\/q7Uzfb3g\/n2igOKY9HlAO\/mVP4oGjHKlpC3Vw0jbemHnhp82zQQPNSS3zLCz2WqAwCU28AGMI86DZ+IBVfvrw1M+7DcqBjdPlWwxy5evP0Pwn1YlJf+pInK2nYPp0EAiLxL9g3CylLAXc8iUlcunJtxgeb4cJ7p0R\/YlLnKznNpGPPDBdzylUmOw2W31LfiODPSbP\/zban+Yg0RlkgAGpYbLeJ+OfRtdddGzQmJONKxmSgUehnszmmUh0SQwJ\/nhVdIh0rNuVtHyXrDDaQo8dGBUtFuluq+eK+FC83w+lwQAyNbBl6yR5WZMsCGaqpxZCQrzBW0y+V5tDgD9ZAt\/03zBzWq5HkB4seaPVYEDzVDmoOkOrMrq\/7J5pAVY5W4V76EHrCUJKe08rclP3wsWQ+cMZ51bNOqq3oo1Mt2vaKEx6g8h32Z0CpAM6NDNPjI51+SeXRMPoTGSTj+\/ZA7utdrAe\/Z4ifmBigsMWis7X8IHh2aYpnPcHeCqpjDq6ti1lry5zRx+h9HzxJl5Pg\/Syqw6iCbURYJhNzx8ch8SeltYzkNWgM1ZjBvHJFMD8pqdk2oVN7c\/0YO+nENOz9w4VOzmIT7nRHlDnD\/mlPX8vsAGP+gFrRckUci6jIO\/\/z0M0c2wrU1Ilnr0BWWBFa9U4ScR2dsvEixowBf3zUxVoBtWoydljcb2\/WSXVcIEE5WC9XGSyn55Dg4zBpq+9XZBD7dxcvm1rw83tuhmCojKYHKPaa3Ll8EPtmJLJ7V4hzjUmNswMEOIIaUvInD2gpW4Avdbq5uUZl1TiqMFVN5Ig0n9LX4BGyyxDxjFvKa4A4RPcEUiFw\/sLmDSRw73zjgTHIHgRNUHDTtDs0sQGQg\/Q5vRLvikeb2seoI4SBITHLTFQTr1Ol63MTLiUEcQGWuSmJL7IqX8JdAPyTdrWi+00p+rLsiTu6TXOVsafFGOIq6dDEx5xfHnshBOqnuCNNI4kFgFXyqfBQVCD2kDcW\/y3pubvWydLcfW6MDDzQOIGJgJ1gyYD86lLBhw22A6GcyD14E2tK0zVNvdYI6z6VP7YWZE98\/hjkmQNFtFqBNM29HQEAlf9dUptRg59KGq6cY03fhSn68QVgYdMIZ8oblPUPcEwFu2XLJCnK74aZmIKAAwjJ7MDKKQymzEXgGE6ciuhx47U08BOH\/euQfOeGJavz5SKTqyqjHU6RTRBfaP3VrpZaMG9cTxjYc7Nxhy6PZUOlnM5956XDvDQMfMr9bB4lScu72ue9VZxzRx\/LpsZeDtWIsGrtdOVdrHIS6s2VszjczlffAykx5eClmBx\/mK5Wh52p2md0UXrBubPS+QQFt4Fk6RxehEk8Lupu+639tsNblOhBpQ\/N44DsPIrS67ohwbmP5mmXHCNCFl5dvIAjcFgu6z4SfDw\/+T0hUFZVs5v8HN\/\/E7eZkpNIGULbXKnW1qK9ZYNKg5KhYKf2t1zvT7BaIoaZJSBxngHSvqvF+2eoOEAmbtdQ3cfyj4EXRkZyD2lkQVEuUXcuM8WHKrKFtmgESF0sAbNjV25FvqdKGyt\/1Qs7qa\/vrw\/UCotvJewzdnoplwU2m4qJxRNsYSiVXbSgd9xuo0suLRMfmbb2jlY3MspWte5VLVosuZK+FwTiaeBUBqvzDNTxAqav1PpKZ4BbNswXKlY1YZ\/cDTBblMfVmIvMaZkcQ33\/K5TZ6dMwkuSEVU+UkA1Agx0+BFWwJamKmkYLALVrwsWSpYX7B6IwfbIooi+Gi95ufxjoSqU5+lA7oQjvno8qt+wnfE9A9AC7QgOtYFbXhlhUtjjHb6zB7qAiNIXDf7gY3KvtggyKWOavSxatHv2IBxGly9GR29\/29B04GYx5NVBE0r4yHwPjxn9bOS0HruHpDBPjglEJEv3pAxyQpdPBlsWkuDnGwn0gPATwjRCHB++Uw15cF5GzidWZKeSYE6il1KIK04c8cF9TPoxWaDYMEehgenwDUrxjeyt3kVJSD9uj8ttOnKepc2urtbhsv0qsMslDTCQksDxu63GUCAoNd4PTkjSze9UYjHvo1RFbEgWnK47Dw\/VvUOqDq41rIUSrEx9hpaEOZmGR5baNhH3LXQPGnHqe437xtYGUVv4sBMbJv5iOWAUwZmq1u23kh3AaIq9tzbYgWLdQMCfaIn5Qv0sya0BMhyXuhriOddDuRGzLstAdXPrB7wCvXsO41seWKGhU4RBlZH6Ydq8+CcOJixfhe6G2+bubC7LejtwTx2pGoEtYSR4eWURmhXjqi67jChd5BDihYS8df9P5Hp60TvNdnonqyf0tLJ+WQ2xzlqHxDIDj51Bg12F4DCpQwm6PMYEtFzTXUvj8De4hkKHwVI\/\/YO8lEpa84OJ5LdM84tHS6pilWZiYjJbI\/Vb\/WVCcULmp9lRTesXzImTK928EwSovymtBgH8\/BXzPote+StPtZGdAey9DYsERnor4IiW3VEEcMz5wavhFaLVjfVm4Qd0pEBtYq1OuLoUtd9\/X+XejIJz0p1SxRretSKIyq8pfeyNXtRQqf0d2JGEyVw1hAJRQYnuHSDOs4eNFj1Sy9+VcsvWpOlbH\/flV\/453emoh\/zBKaI3qvupu71eKx0hZ2H1E2vqpgKFqj6+LILNirzWFAYKukoNStkIsI7onAEs8UJAd9V+PmTdV0AHEYLTg3TsMV7I2RMFRtlCEtjNNR6ZbSKlL+G61Va7tze4Iv5cf+7mWGtorxyAFD+REZE3LXLekPixImr+RPo75fy+jCaEX9hEN4u05qjUpzM2Mm\/9WvoiOQ2K8w4fOHG2svAQ8Z6UNVe7pGEdHoyo+WWQ7Y62dErrXm2IlKzrpzMX\/GtTy3KThBehktT1eNTnTllXb\/5LIkJg6BuyAE1cjR9sI1gHQ7E3xdajUgVGctz+ZWMJgDPDuXndI0hy5ZU5J0jN7J9mepugdh5aX4cp6w0wi4TRBhu9DpDgYcGmWb3UMuUDcqC77rgtm32TVFqE3MYa6mKYCIoENwMNJjbM2gGuonhQ1h5Igj\/7gxguxBDcD3O5RuzxlTkd2Rw9nuDouOdMRQg3ebaPsYmyjBlam\/oJsQJJvmTvk4c47sgeIiTgBdBM4EjA8dj9jN3IN+W2sDa6Y9kK9Iy5uh0zyFEMzNhGKWy0R\/HiOgARjYQlsHiFRAwsF7A\/VVomCGPFJ7a5+RDR9AFZQazKVWzWxqufEDnwup7DKZ9IkhSnxpsjMY\/LosOnwZdlKV9WCvz\/wLzbTk2XlSamXzPqqDkDzQfx5U1DuaWQRcCHLa69nJ\/p8rybV7CVBxoLUfgm+zgUOyWDqtv3PQhTTH9K8lpqh9Y4NejCu7eJ8bwpUvd8su1F0xrDobQVjKIg6QW0hZ+0Dnci65IkIl96dVJKRnCyQAoRYi44t\/dG4HsRn1HG9SitMPJ9+SQZnuZAGfI293TpDzGNo70pzlYOvOjgcVC4V1+NIgiQRDRbGZBFInacVxUKdnbYcrXn9QT31ljUZ6\/dBY\/X8FSpG+4bOzviwHSPb5k3qt1LwYpEe5uK2FyhhvDveDxyMOXToQPIPl8VM1ZAuX\/3ZKpyXs9ZLnd8u6MbV+hp\/FwJ3juU3e23A4DbxFvBdFZqtMQUzUJe\/3CggVswpmBCMhcQvvFPvi5WGoO310S0so2KW1LroRXeIH0JQF9dlsNfS8L9CDelKVG3s+GGmUuwAsoTChE0HmY5t0lhw733LKvXefYpz3r2L96eA6apsRBDkbrW9KKg54rtHHYf7rtdQ58pRX3fISw=","encoding":"base64"}

Reference

Mods

Bitwise enum representing a combination of enabled mods.

enum Mods
{
    None           = 0,
    NoFail         = 1,
    Easy           = 2,
    //NoVideo      = 4,
    Hidden         = 8,
    HardRock       = 16,
    SuddenDeath    = 32,
    DoubleTime     = 64,
    Relax          = 128,
    HalfTime       = 256,
    Nightcore      = 512, // Only set along with DoubleTime. i.e: NC only gives 576
    Flashlight     = 1024,
    Autoplay       = 2048,
    SpunOut        = 4096,
    Relax2         = 8192,  // Autopilot?
    Perfect        = 16384,
    Key4           = 32768,
    Key5           = 65536,
    Key6           = 131072,
    Key7           = 262144,
    Key8           = 524288,
    keyMod         = Key4 | Key5 | Key6 | Key7 | Key8,
    FadeIn         = 1048576,
    Random         = 2097152,
    LastMod        = 4194304,
    FreeModAllowed = NoFail | Easy | Hidden | HardRock | SuddenDeath | Flashlight | FadeIn | Relax | Relax2 | SpunOut | keyMod,
    Key9           = 16777216,
    Key10          = 33554432,
    Key1           = 67108864,
    Key3           = 134217728,
    Key2           = 268435456
}

osu:// URL Schema

schema Description
osu://mp/<int mpID>[/<string password>] Link to a multiplayer match. mpID is an ID to a multiplayer match (does not work with the API call /api/get_match!), while password is the password to the multiplayer lobby (if it has one, that is).
osu://edit/<xx:xx:xxx>[ (x,x,x,x...)] (x is an int from 0 to 9). xx:xx:xxx is a position in time of a song, while x,x,x,x,x (can be as many as you wish) are hit objects (sliders, circles, spinners) that have been selected. this link is added automatically in mods (for instance, this one is a mod) when xx:xx:xxx (x,x,x,x...) is written. It usually isn't written by hand, usually modders select a few notes from the in-game editor and use ctrl+c to copy xx:xx:xxx (x,x,x,x...) to clipboard.
osu://chan/#<string ChanName> Link to a channel in the osu! chat. (e.g. osu://chan/#italian). When clicked, the channel is automatically opened in osu!. If you want to do a sort of integration of your tool, you can change it with an irc link to cho.ppy.sh on channel ChanName, although it will require authentication with a password that can be obtained going to this page.
osu://dl/<int mapsetID> Link to an osu!direct download. osu!direct is a supporter-only feature. You can get data of the beatmap by doing an api request (/api/get_beatmap?k=&s=)
osu://spectate/<String username or int userid> Starts spectating the user with the given name or id.
Something went wrong with that request. Please try again.