Skip to content

Dokumentasi osu! api

Ahmad Yaqdhan edited this page Dec 25, 2020 · 3 revisions

osu!api

Versi Api: 1.0

Iktisar

Osu! API adalah sebuah rest api yang digunakan untuk mengetahui informasi yang ada di dalam osu! seperti skor beatmap dan lain-lain

Terms of Use (Syarat penggunaan)

Gunakan API Ini sebaik-baiknya. Dilarang melakukan sesuatu hal yang gak perlu dan merusak server hanya karena satu orang

Rate limit (batas permintaan) saat ini disetel pada angka yang sangat tinggi yaitu 1200 permintaan per menit, dengan kemampuan melebihi hingga 200 diatas angka tersebut. Jika kamu butuh lebih, kamu mungkin di tempatkan diatas kategori abuse (penyalahgunaan). Jika kamu melakukan permintaan lebih dari 60 permintaan dalam satu menit, kamu mungkin seharusnya memberikan pesan kepada peppy.

Requesting Access

Kamu bisa meminta sebuah API Key dari https://osu.ppy.sh/p/api.

Beatmap

/api/get_beatmaps

Ikhtisar

Mengambil informasi umum beatmap.

URL
/api/get_beatmaps
Parameter
  • k - api key (dibutuhkan).
  • since - return all beatmaps ranked or loved since this date. Must be a MySQL date. In UTC
  • 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.
  • mods - mods that applies to the beatmap requested. Optional, default is 0. (Refer to the Mods section below, note that requesting multiple mods is supported, but it should not contain any non-difficulty-increasing mods or the return value will be invalid.)
Response

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

[{
    "approved"             : "1",                   // 4 = loved, 3 = qualified, 2 = approved, 1 = ranked, 0 = pending, -1 = WIP, -2 = graveyard
    "submit_date"          : "2013-05-15 11:32:26", // date submitted, in UTC
    "approved_date"        : "2013-07-06 08:54:46", // date ranked, in UTC
    "last_update"          : "2013-07-06 08:51:22", // last update date, in UTC. 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_",
    "creator_id"           : "686209",
    "difficultyrating"     : "5.744717597961426",   // The amount of stars the map would have ingame and on the website
    "diff_aim"             : "2.7706098556518555",
    "diff_speed"           : "2.9062750339508057",
    "diff_size"            : "4",                   // Circle size value (CS)
    "diff_overall"         : "8",                   // Overall difficulty (OD)
    "diff_approach"        : "9",                   // Approach Rate (AR)
    "diff_drain"           : "7",                   // Health drain (HP)
    "hit_length"           : "114",                 // seconds from first note to last note not including breaks
    "source"               : "BMS",
    "genre_id"             : "2",                   // 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"         : "146",                 // 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,
    "tags"                 : "kloyd flower roxas",  // Beatmap tags separated by spaces.
    "favourite_count"      : "140",                 // Number of times the beatmap was favourited. (americans: notice the ou!)
    "rating"               : "9.44779",
    "playcount"            : "94637",               // Number of times the beatmap was played
    "passcount"            : "10599",               // Number of times the beatmap was passed, completed (the user didn't fail or retry)
    "max_combo"            : "899",                 // The maximum combo a user can reach playing this beatmap.
    "download_unavailable" : "0",                   // If the download for this beatmap is unavailable (old map, etc.)
    "audio_unavailable"    : "0"                    // If the audio for this beatmap is unavailable (DMCA takedown, etc.)
}, { ... }, ...]

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",
    "join_date"            : "2014-07-13 06:26:30", // In UTC
    "count300"             : "1337",      // Total amount for all ranked, approved, and loved beatmaps played
    "count100"             : "123",       // Total amount for all ranked, approved, and loved beatmaps played
    "count50"              : "69",        // Total amount for all ranked, approved, and loved beatmaps played
    "playcount"            : "42",        // Only counts ranked, approved, and loved beatmaps
    "ranked_score"         : "666666",    // Counts the best individual score on each ranked, approved, and loved beatmaps
    "total_score"          : "999999998", // Counts every score on ranked, approved, and loved beatmaps
    "pp_rank"              : "2442",
    "level"                : "50.5050",
    "pp_raw"               : "3113",      // For inactive players this will be 0 to purge them from leaderboards
    "accuracy"             : "98.1234",
    "count_rank_ss"        : "54",
    "count_rank_ssh"       : "54",
    "count_rank_s"         : "81",        // Counts for SS/SSH/S/SH/A ranks on maps
    "count_rank_sh"        : "81",
    "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/)
        "total_seconds_played" : "1823790",
    "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", // In UTC
        "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_id"         : "7654321",
    "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", // in UTC
    "rank"             : "SH",
    "pp"               : "1.3019",        //Float value , 4 decimals
    "replay_available" : "1"              // 1 = osu! official servers store the replay, 0 - does not
}, { ... }, ...]

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"   : "1582674",
        "score_id"     : "2791309545",
        "score"        : "5320058",
        "maxcombo"     : "472",
        "count50"      : "0",
        "count100"     : "28",
        "count300"     : "325",
        "countmiss"    : "0",
        "countkatu"    : "21",
        "countgeki"    : "64",
        "perfect"      : "0",          // 1 = maximum combo of map reached, 0 otherwise
        "enabled_mods" : "64",         // bitwise flag representation of mods used. see reference
        "user_id"      : "3117824",
        "date"         : "2019-04-27 13:52:15", // in UTC
        "rank"         : "S",
        "pp"           : "467.557"         //Float value , 4 decimals
}, { ... }, ...]

Recently Played

/api/get_user_recent

Overview

Gets the user's ten most recent plays over the last 24 hours.

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", // in UTC
    "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 object containing match information, and player's result.

{
    "match":{
        "match_id"     : "1936471",
        "name"         : "Marcin's game",
        "start_time"   : "2013-10-06 03:34:54", // in UTC
        "end_time"     : null             // null if not ended, date in UTC when match is disbanded
    },
    "games":[{
        "game_id"      : "45668898",
        "start_time"   : "2013-10-06 03:36:27", // in UTC
        "end_time"     : "2013-10-06 03:40:01", // in UTC
        "beatmap_id"   : "181717",
        "play_mode"    : "0",              // standard = 0, taiko = 1, ctb = 2, o!m = 3
        "match_type"   : "0",              // couldn't find
        "scoring_type" : "0",              // winning condition: score = 0, accuracy = 1, combo = 2, score v2 = 3
        "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 at the end of the map it is 0, otherwise (pass or revive) it is 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).
  • 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).
  • mods - specify a mod or mod combination (See the bitwise enum)
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"}

Note that the binary data you get when you decode above base64-string, is not the contents of an .osr-file. It is the LZMA stream referred to by the osu-wiki here:

The remaining data contains information about mouse movement and key presses in an wikipedia:LZMA stream (https://osu.ppy.sh/help/wiki/osu!_File_Formats/Osr_(file_format))

Reference

Mods

Bitwise enum representing a combination of enabled mods.

enum Mods
{
    None           = 0,
    NoFail         = 1,
    Easy           = 2,
    TouchDevice    = 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, // Only set along with SuddenDeath. i.e: PF only gives 16416  
    Key4           = 32768,
    Key5           = 65536,
    Key6           = 131072,
    Key7           = 262144,
    Key8           = 524288,
    FadeIn         = 1048576,
    Random         = 2097152,
    Cinema         = 4194304,
    Target         = 8388608,
    Key9           = 16777216,
    KeyCoop        = 33554432,
    Key1           = 67108864,
    Key3           = 134217728,
    Key2           = 268435456,
    ScoreV2        = 536870912,
    LastMod        = 1073741824,
        KeyMod = Key1 | Key2 | Key3 | Key4 | Key5 | Key6 | Key7 | Key8 | Key9 | KeyCoop,
        FreeModAllowed = NoFail | Easy | Hidden | HardRock | SuddenDeath | Flashlight | FadeIn | Relax | Relax2 | SpunOut | KeyMod,
        ScoreIncreaseMods = Hidden | HardRock | DoubleTime | Flashlight | FadeIn
}

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 integer from 0 to 9. xx:xx:xxx represents the position in time of a song, while (x,x,x,x...) represents the selected hit objects such as sliders, circles, and spinners. This link is added automatically in mods such as this one when xx:xx:xxx (x,x,x,x...) is written. The numbers aren't typically 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 the 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.