smule.js
Version:
A javascript library for Smule's mobile API
1,115 lines (1,108 loc) • 192 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
AvTemplateCategoryListRequest: () => AvTemplateCategoryListRequest,
CategoryRequest: () => CategoryRequest,
CustomFormData: () => CustomFormData,
Device: () => Device,
IsFollowingRequest: () => IsFollowingRequest,
LoginAsGuestRequest: () => LoginAsGuestRequest,
LoginCommonData: () => LoginCommonData,
LoginRequest: () => LoginRequest,
PerformanceCreateRequest: () => PerformanceCreateRequest,
PerformancePartsRequest: () => PerformancePartsRequest,
PerformanceReq: () => PerformanceReq,
PerformancesListRequest: () => PerformancesListRequest,
PreferencesRequest: () => PreferencesRequest,
PreuploadRequest: () => PreuploadRequest,
SearchAutocompleteRequest: () => SearchAutocompleteRequest,
SearchRequest: () => SearchRequest,
SettingsRequest: () => SettingsRequest,
SingUserProfileRequest: () => SingUserProfileRequest,
Smule: () => Smule,
SmuleDotCom: () => SmuleDotCom,
SmuleErrorCode: () => SmuleErrorCode,
SmuleRegisterErrorCode: () => SmuleRegisterErrorCode,
SmuleSession: () => SmuleSession,
SmuleUrls: () => SmuleUrls,
SmuleUserSinging: () => SmuleUserSinging,
SmuleUtil: () => SmuleUtil,
SongbookRequest: () => SongbookRequest,
UpdateFollowingRequest: () => UpdateFollowingRequest,
Util: () => Util
});
module.exports = __toCommonJS(index_exports);
// src/types/smule-requests.ts
var import_crypto = require("crypto");
var Device = class {
carrierCountry = "us";
country = "US";
deviceId = "a:198de726-8de9-4b60-858e-cef5abaf5a59";
deviceType = "AND";
googlePlayServices = "21.26.21 (100800-387928701)";
hasMail = true;
lang = "en";
limitAdTrack = false;
locale = "en_US";
machine = "SM-S908E";
manufacturer = "samsung";
os = "9";
product = "b0qxxx";
screenSize = "large";
script = "";
constructor(carrierCountry = "us", country = "US", deviceId = "a:" + (0, import_crypto.randomUUID)(), deviceType = "AND", googlePlayServices = "21.26.21 (100800-387928701)", hasMail = true, lang = "en", limitAdTrack = false, locale = "en_US", machine = "SM-S908E", manufacturer = "samsung", os = "9", product = "b0qxxx", screenSize = "large", script = "") {
this.carrierCountry = carrierCountry;
this.country = country;
this.deviceId = deviceId;
this.deviceType = deviceType;
this.googlePlayServices = googlePlayServices;
this.hasMail = hasMail;
this.lang = lang;
this.limitAdTrack = limitAdTrack;
this.locale = locale;
this.machine = machine;
this.manufacturer = manufacturer;
this.os = os;
this.product = product;
this.screenSize = screenSize;
this.script = script;
}
};
var LoginCommonData = class {
advId = (0, import_crypto.randomUUID)();
device = new Device();
automaticLogin = true;
playerId = 0;
reactivateSubmittedAccount = false;
tzOffset = 7200;
vorgom = false;
welcome = false;
constructor(device) {
if (device) this.device = device;
}
};
var LoginAsGuestRequest = class {
loginCommon = new LoginCommonData();
constructor(loginCommon) {
if (loginCommon) this.loginCommon = loginCommon;
}
toJSON() {
return {
common: this.loginCommon,
forceNewPlayer: true,
lookupAccount: true,
settingsIds: [
"sing_google.subscriptions",
"sing_google.stream_values",
"sing_google.user_messages",
"sing_google.buy_msg",
"sing_google.tutorial",
"sing_google.get_more_credits",
"sing_google.cccp",
"sing_google.songbook",
"sing_google.preSing",
"sing_google.ftuxBlocking",
"sing_google.songUpsell",
"sing_google.explore",
"sing_google.mediaPlayer",
"sing_google.ads",
"sing_google.smeaks",
"sing.profile",
"sing.playlists",
"sing.audio",
"sing.audioFilters",
"sing.arr",
"sing.suggestions",
"sing.onboarding",
"sing.cccp",
"sing.acappella",
"sing.video",
"sing.videoEncoding",
"sing.chat",
"sing.search",
"sing.videoFX",
"sing.videoStyles",
"sing.avqSurvey",
"sing.paywall",
"sing_google.subscriptions",
"sing.freeform",
"dfp",
"appLaunch",
"sing.crm",
"sing.boost",
"sing.share",
"sing.feed",
"sing.findFriendsModule",
"sing.localization",
"sing.seeds",
"sing.nowPlaying",
"sing.registration",
"sing.upload",
"sing.families",
"sing.appSettings",
"campfire.avStreamQuality",
"campfire.config",
"sing.virtualCurrency",
"campfire.audioFilters",
"links",
"sing.singingFlow",
"sing.explore",
"sing.songbookUsability",
"sing.templates",
"sing.notifications",
"sing.topics",
"sing.banners",
"sing.shortJoins",
"sing.vcs",
"sing.notifications",
"sing.customPitchMarker",
"sing.tipping"
]
};
}
};
var LoginRequest = class {
loginCommon = new LoginCommonData();
data = {
email: "",
password: ""
};
constructor(email, password, loginCommon) {
this.data.email = email;
this.data.password = password;
if (loginCommon)
this.loginCommon = loginCommon;
}
toJSON() {
return {
...this.loginCommon,
...this.data
};
}
};
var SearchRequest = class {
data = {
"cursor": "start",
"limit": 25,
"resultType": "RECORDING",
"sort": "RECENT",
"term": "i deserve this"
};
constructor(cursor = "start", limit = 25, resultType = "SONG", sort = "POPULAR", term = "") {
this.data.cursor = cursor;
this.data.limit = limit;
this.data.resultType = resultType;
this.data.sort = sort;
this.data.term = term;
}
toJSON() {
return this.data;
}
};
var SearchAutocompleteRequest = class {
data = {
limit: 5,
term: ""
};
constructor(term, limit) {
this.data.limit = limit;
this.data.term = term;
}
toJSON() {
return this.data;
}
};
var PerformancesListRequest = class {
data = {
"fillStatus": "ACTIVESEED",
"limit": 25,
"offset": 0,
"sort": "SUGGESTED",
"video": false
};
constructor(sort = "SUGGESTED", fillStatus = "ACTIVESEED", limit = 25, offset = 0) {
this.data.fillStatus = fillStatus;
this.data.limit = limit;
this.data.offset = offset;
this.data.sort = sort;
}
toJSON() {
return this.data;
}
};
var PerformancePartsRequest = class {
data = {
"accountId": 0,
"app": "sing_google",
"collapsed": true,
"fillStatus": "FILLED",
"limit": 20,
"offset": 0,
"sortMethod": "NEWEST_FIRST"
};
constructor(accountId, fillStatus, sortMethod, limit = 20, offset = 0) {
this.data.accountId = accountId;
this.data.fillStatus = fillStatus;
this.data.sortMethod = sortMethod;
this.data.limit = limit;
this.data.offset = offset;
}
toJSON() {
return this.data;
}
};
var PreuploadRequest = class {
data = {
"arrKey": "16827545_16827545",
"compType": "ARR",
"ensembleType": "SOLO",
"trackVideo": false,
"uploadType": "CREATE",
seedKey: void 0
};
constructor(arrKey, compType, ensembleType, uploadType = "CREATE", trackVideo = false, seedKey) {
this.data.arrKey = arrKey;
this.data.compType = compType;
this.data.ensembleType = ensembleType;
this.data.trackVideo = trackVideo;
this.data.uploadType = uploadType;
this.data.seedKey = seedKey;
}
toJSON() {
return this.data;
}
};
var PerformanceCreateRequest = class {
arrKey = void 0;
arrVer = 2;
audioResourceId;
avTemplateId = 652900;
compType = "ARR";
coverResourceId;
ensembleType = "SOLO";
isPrivate = true;
latitude = 37;
// 39.0138299 lol
longitude = -120;
// 125.777819 lol
message;
metadataResourceId;
seconds = 0;
title;
trackAvTemplateId = 306890;
trackFxMode = "ALYCE";
trackOptions = '{"score":0,"afx_ver":0,"gain":-0.11999998986721039}';
trackVideo = false;
usedHeadphone = true;
vfactor = 0;
vscore = 0;
trackPartId = void 0;
savedEarly = false;
performanceKey = void 0;
constructor(arrKey, arrVer = 0, ensembleType = "SOLO", avTemplateId = 652900, isPrivate = true, message, title, usedHeadphone = false, compType = "ARR", seconds = 0, trackPartId = 1, performanceKey = void 0, trackAvTemplateId = void 0, trackFxMode = "ALYCE", trackOptions = '{"score":0,"afx_ver":0,"gain":-0.11999998986721039,"aiStylesDisabled":true}', trackVideo = false, vfactor = 0, vscore = 0) {
this.arrKey = arrKey;
this.arrVer = arrVer;
this.avTemplateId = avTemplateId;
this.compType = compType;
this.isPrivate = isPrivate;
this.message = message;
this.seconds = seconds;
this.title = title;
this.trackAvTemplateId = trackAvTemplateId;
this.trackFxMode = trackFxMode;
this.trackOptions = trackOptions;
this.trackVideo = trackVideo;
this.usedHeadphone = usedHeadphone;
this.vfactor = vfactor;
this.vscore = vscore;
this.ensembleType = ensembleType;
this.performanceKey = performanceKey;
if (ensembleType != "SOLO") {
this.trackPartId = parseInt(trackPartId);
}
}
};
var PerformanceReq = class {
app = "sing_google";
arrKey = "";
fillStatus = "SEED";
limit = 25;
offset = 0;
sort = "RECENT";
video = void 0;
/**
* Used to request a list of performances for this song key with these criterias
*
* @param key - The arr key associated with the song.
* @param sort - The order in which performances should be sorted. Default is RECENT.
* @param fillStatus - The fill status of the performances. Default is ACTIVESEED.
* @param limit - The maximum number of performances to fetch. Default is 25.
* @param offset - The starting point for fetching performances. Default is 0.
* @param video - Whether to retrieve only video performances.
*/
constructor(key, sort = "RECENT", fillStatus = "ACTIVESEED", limit = 25, offset = 0, video) {
this.arrKey = key;
this.fillStatus = fillStatus;
this.limit = limit;
this.offset = offset;
this.sort = sort;
this.video = video;
}
};
var SingUserProfileRequest = class {
data = {
accountId: 0,
includeActiveState: true
};
constructor(accountId) {
this.data.accountId = accountId;
}
toJSON() {
return this.data;
}
};
var IsFollowingRequest = class {
data = {
accountIds: [],
apps: ["sing_google"]
};
constructor(accountIds) {
this.data.accountIds = accountIds;
}
toJSON() {
return this.data;
}
};
var UpdateFollowingRequest = class {
data = {
add: [],
content: "APP",
remove: []
};
constructor(accountIdsToAdd, accountIdsToRemove) {
this.data.add = accountIdsToAdd;
this.data.remove = accountIdsToRemove;
}
toJSON() {
return this.data;
}
};
var SongbookRequest = class {
data = {
cat1SongsCursor: "start",
cat1SongsLimit: 10
};
constructor(cursor = "start", limit = 10) {
this.data.cat1SongsCursor = cursor;
this.data.cat1SongsLimit = limit;
}
toJSON() {
return this.data;
}
};
var CategoryRequest = class {
data = {
cursor: "start",
limit: 10,
id: 9998,
duetAccountId: void 0
};
constructor(cursor = "start", limit = 10, categoryId = 9998, duetAccountId) {
this.data.cursor = cursor;
this.data.limit = limit;
this.data.id = categoryId;
if (duetAccountId) this.data.duetAccountId = duetAccountId;
}
toJSON() {
return this.data;
}
};
var SettingsRequest = class {
device = new Device();
constructor(device) {
if (device) this.device = device;
}
// while yes i could manually feed it the settings strings,
// theres no real reason why i shouldnt just list them all lol
toJSON() {
return {
"device": this.device,
"settingsIds": [
"sing_google.subscriptions",
"sing_google.stream_values",
"sing_google.user_messages",
"sing_google.buy_msg",
"sing_google.tutorial",
"sing_google.get_more_credits",
"sing_google.cccp",
"sing_google.songbook",
"sing_google.preSing",
"sing_google.ftuxBlocking",
"sing_google.songUpsell",
"sing_google.explore",
"sing_google.mediaPlayer",
"sing_google.ads",
"sing_google.smeaks",
"sing.profile",
"sing.playlists",
"sing.audio",
"sing.audioFilters",
"sing.arr",
"sing.suggestions",
"sing.onboarding",
"sing.cccp",
"sing.acappella",
"sing.video",
"sing.videoEncoding",
"sing.chat",
"sing.search",
"sing.videoFX",
"sing.videoStyles",
"sing.avqSurvey",
"sing.paywall",
"sing_google.subscriptions",
"sing.freeform",
"dfp",
"appLaunch",
"sing.crm",
"sing.boost",
"sing.share",
"sing.feed",
"sing.findFriendsModule",
"sing.localization",
"sing.seeds",
"sing.nowPlaying",
"sing.registration",
"sing.upload",
"sing.families",
"sing.appSettings",
"campfire.avStreamQuality",
"campfire.config",
"sing.virtualCurrency",
"campfire.audioFilters",
"links",
"sing.singingFlow",
"sing.explore",
"sing.songbookUsability",
"sing.templates",
"sing.notifications",
"sing.topics",
"sing.banners",
"sing.shortJoins",
"sing.vcs",
"sing.notifications",
"sing.customPitchMarker",
"sing.tipping",
"appFamily"
]
};
}
};
var PreferencesRequest = class {
toJSON() {
return {
names: [
"SPARK_PUSH_DISABLE",
"SPARK_READRECEIPT_DISABLE",
"CHAT_STATE_DISABLE"
]
};
}
};
var AvTemplateCategoryListRequest = class {
data = {
"category": "AUDIO",
"cursor": "start",
"limit": 25,
"avTemplateType": "STANDARD"
};
constructor(category = "AUDIO", cursor = "start", limit = 25, avTemplateType = "STANDARD") {
this.data.category = category;
this.data.cursor = cursor;
this.data.limit = limit;
this.data.avTemplateType = avTemplateType;
}
toJSON() {
return this.data;
}
};
// src/types/smule-types.ts
var SmuleSession = class {
sessionToken = "";
refreshToken = "";
isGuest = false;
expired = true;
device = new Device();
// globe geolocation stuff
// these are used for creating performances and such
latitude;
longitude;
};
var SmuleErrorCode = {
61: "Tried to access non-guest endpoint, but you are guest",
// Error code 50 can also be something along the lines of "Filename not specified"
// during multipart requests
50: "Digest error / Digest not provided",
51: "Session error / Session not provided / Session expired",
69: "Wrong credentials / Failed to log in",
71: "Invalid offset",
// this triggers if we attempt to use an older session token
2001: "New session token required. Try to refresh your login!",
1012: "VIP required",
1013: "Subscription error / VIP required",
10: "No result?",
1052: "Not enough coins",
2017: "Group waiting period not expired",
// unsure what this actually means
2013: "Banned from group",
1044: "Group join limit reached"
};
var SmuleRegisterErrorCode = {
13: "Account already exists"
};
// src/util.ts
var Util;
((Util2) => {
function getParametersFromUrl(url) {
return url.split("?")[1];
}
Util2.getParametersFromUrl = getParametersFromUrl;
function getHostFromFullUrl(url) {
return url.split("/")[2];
}
Util2.getHostFromFullUrl = getHostFromFullUrl;
function getPathFromFullUrl(url) {
let temp = url.replaceAll("://", "").split("/");
temp.shift();
return "/" + temp.join("/").split("?")[0];
}
Util2.getPathFromFullUrl = getPathFromFullUrl;
function queryToObject(query) {
if (query instanceof URLSearchParams) return Object.fromEntries(query);
return Object.fromEntries(new URLSearchParams(query));
}
Util2.queryToObject = queryToObject;
function objectToQuery(query) {
return Object.entries(query).map(([key, value]) => `${key}=${value}`).join("&");
}
Util2.objectToQuery = objectToQuery;
function formatTime(ms, showMS = false) {
if (!ms) return showMS ? "00:00.000" : "00:00";
let sec = Math.floor(ms / 1e3);
let min = Math.floor(sec / 60);
sec %= 60;
if (sec < 10) sec = "0" + sec;
if (min < 10) min = "0" + min;
if (showMS) return `${min}:${sec}.${ms % 1e3}`;
return `${min}:${sec}`;
}
Util2.formatTime = formatTime;
function formatValue(value, largeCharacter = true) {
if (value >= 1e3) {
if (value >= 1e6) return Math.round(value / 1e5) / 10 + (largeCharacter ? "M" : "m");
return Math.round(value / 100) / 10 + (largeCharacter ? "K" : "k");
}
return value + "";
}
Util2.formatValue = formatValue;
})(Util || (Util = {}));
var CustomFormData = class {
data = {};
set(key, value, type = "application/octet-stream", filename) {
this.data[key] = {
type,
value,
filename
};
}
get(key) {
return this.data[key]?.value;
}
serialize() {
let boundary = "--1335a53d-7c46-4dd6-8e1e-c2f96c3987c5";
let buffers = [
Buffer.from(boundary + "\r\n")
];
for (let key of Object.keys(this.data)) {
let str = `Content-Disposition: form-data; name="${key}"` + (this.data[key].filename != void 0 ? `; filename="${this.data[key].filename}"\r
` : "\r\n") + `Content-Transfer-Encoding: binary\r
Content-Type: ${this.data[key].type}\r
Content-Length: ${this.data[key].value.length}\r
\r
`;
buffers.push(Buffer.from(str));
buffers.push(Buffer.from(this.data[key].value));
buffers.push(Buffer.from("\r\n" + boundary + "\r\n"));
}
buffers.pop();
buffers.push(Buffer.from("\r\n" + boundary + "--\r\n"));
return Buffer.concat(buffers);
}
};
var SmuleUtil;
((SmuleUtil2) => {
function checkLoggedIn(session) {
return !session.expired && session.sessionToken != "";
}
SmuleUtil2.checkLoggedIn = checkLoggedIn;
function isVerified(verifiedType) {
return ["STAFF", "PARTNER_ARTIST", "VERIFIED_BASIC"].includes(verifiedType);
}
SmuleUtil2.isVerified = isVerified;
function isVIP(subApps) {
return subApps.filter((s) => ["sing_google", "sing"].includes(s)).length > 0;
}
SmuleUtil2.isVIP = isVIP;
function getGroupMembershipType(membership) {
switch (membership) {
case 1:
return "ADMIN";
case 2:
return "MEMBER";
case 3:
return "PENDING_INVTN";
case 4:
return "PENDING_RQST";
case 5:
return "GUEST";
default:
return "UNKNOWN";
}
}
SmuleUtil2.getGroupMembershipType = getGroupMembershipType;
function getFilesFromArr(arr) {
return {
preview: arr.normResources.find((r) => r.role == "preview")?.url,
cover: arr.normResources.find((r) => r.role == "cover_art")?.url,
cover_android: arr.normResources.find((r) => r.role == "cover_art_google")?.url,
cover_ios: arr.normResources.find((r) => r.role == "cover_art_ios")?.url,
midi_file: arr.normResources.find((r) => r.role == "main")?.url,
song_file: arr.normResources.find((r) => r.role == "background")?.url,
meta_file: arr.normResources.find((r) => r.role == "meta")?.url,
mir_file: arr.normResources.find((r) => r.role == "mir")?.url,
preview_original: arr.origResources.find((r) => r.role == "preview")?.url,
cover_original: arr.origResources.find((r) => r.role == "cover")?.url,
cover_android_original: arr.origResources.find((r) => r.role == "cover_google")?.url,
cover_ios_original: arr.origResources.find((r) => r.role == "cover_ios")?.url,
midi_file_original: arr.origResources.find((r) => r.role == "midi")?.url,
song_file_original: arr.origResources.find((r) => r.role == "bg")?.url,
pitch_file: arr.origResources.find((r) => r.role == "pitch")?.url
};
}
SmuleUtil2.getFilesFromArr = getFilesFromArr;
})(SmuleUtil || (SmuleUtil = {}));
// src/smule.ts
var import_axios = __toESM(require("axios"), 1);
// src/smule-live-chat.ts
var import_client = require("@xmpp/client");
// src/smule-urls.ts
var SmuleUrls;
((SmuleUrls2) => {
SmuleUrls2.normalHost = "api-sing.smule.com";
SmuleUrls2.betaHost = "api-beta.smule.com";
SmuleUrls2.userChat = "j.smule.com";
SmuleUrls2.cfireChat = "jc.smule.com";
SmuleUrls2.baseUrl = "https://api-sing.smule.com/v2";
SmuleUrls2.AccessToken = SmuleUrls2.baseUrl + "/access/token";
SmuleUrls2.AccountDeleteSubmit = SmuleUrls2.baseUrl + "/account/delete/submit";
SmuleUrls2.AccountExplore = SmuleUrls2.baseUrl + "/account/explore";
SmuleUrls2.AccountInfo = SmuleUrls2.baseUrl + "/account/info";
SmuleUrls2.AccountLookup = SmuleUrls2.baseUrl + "/account/lookup";
SmuleUrls2.AccountProfileStats = SmuleUrls2.baseUrl + "/account/profile/stats";
SmuleUrls2.AccountProfileStatsViews = SmuleUrls2.baseUrl + "/account/profile/stats/views";
SmuleUrls2.AccountProfileStatsDrilldownAccounts = SmuleUrls2.baseUrl + "/account/profile/stats/drilldown/accounts";
SmuleUrls2.AccountProfileStatsDrilldownPerformances = SmuleUrls2.baseUrl + "/account/profile/stats/drilldown/performances";
SmuleUrls2.AccountStatisticsYearly = SmuleUrls2.baseUrl + "/account/statistics/yearly";
SmuleUrls2.AccountStats = SmuleUrls2.baseUrl + "/account/stats";
SmuleUrls2.AccountWallet = SmuleUrls2.baseUrl + "/account/wallet";
SmuleUrls2.AnalyticsCfireStats = SmuleUrls2.baseUrl + "/analytics/cfireStats";
SmuleUrls2.AnalyticsEl = SmuleUrls2.baseUrl + "/analytics/el";
SmuleUrls2.Aplist = SmuleUrls2.baseUrl + "/aplist";
SmuleUrls2.AplistCreate = SmuleUrls2.baseUrl + "/aplist/create";
SmuleUrls2.AplistDelete = SmuleUrls2.baseUrl + "/aplist/delete";
SmuleUrls2.AplistFavorites = SmuleUrls2.baseUrl + "/aplist/favorites";
SmuleUrls2.AplistFavoritesCreate = SmuleUrls2.baseUrl + "/aplist/favorites/create";
SmuleUrls2.AplistList = SmuleUrls2.baseUrl + "/aplist/list";
SmuleUrls2.AplistListInfo = SmuleUrls2.baseUrl + "/aplist/list/info";
SmuleUrls2.AplistPerfAdd = SmuleUrls2.baseUrl + "/aplist/perf/add";
SmuleUrls2.AplistPerfDelete = SmuleUrls2.baseUrl + "/aplist/perf/delete";
SmuleUrls2.AplistUpdate = SmuleUrls2.baseUrl + "/aplist/update";
SmuleUrls2.AplistView = SmuleUrls2.baseUrl + "/aplist/view";
SmuleUrls2.Arr = SmuleUrls2.baseUrl + "/arr";
SmuleUrls2.ArrActionAfterSing = SmuleUrls2.baseUrl + "/arr/actionAfterSing";
SmuleUrls2.ArrBookmark = SmuleUrls2.baseUrl + "/arr/bookmark";
SmuleUrls2.ArrBookmarkList = SmuleUrls2.baseUrl + "/arr/bookmark/list";
SmuleUrls2.ArrBookmarkRemove = SmuleUrls2.baseUrl + "/arr/bookmark/remove";
SmuleUrls2.ArrByKeys = SmuleUrls2.baseUrl + "/arr/byKeys";
SmuleUrls2.ArrCreate = SmuleUrls2.baseUrl + "/arr/create";
SmuleUrls2.ArrDelete = SmuleUrls2.baseUrl + "/arr/delete";
SmuleUrls2.ArrDetail = SmuleUrls2.baseUrl + "/arr/detail";
SmuleUrls2.ArrFromRSong = SmuleUrls2.baseUrl + "/arr/fromrsong";
SmuleUrls2.ArrList = SmuleUrls2.baseUrl + "/arr/list";
SmuleUrls2.ArrOwned = SmuleUrls2.baseUrl + "/arr/owned";
SmuleUrls2.ArrPlay = SmuleUrls2.baseUrl + "/arr/play";
SmuleUrls2.ArrResourceCreate = SmuleUrls2.baseUrl + "/arr/resource/create";
SmuleUrls2.ArrUpdate = SmuleUrls2.baseUrl + "/arr/update";
SmuleUrls2.ArrVerCreate = SmuleUrls2.baseUrl + "/arr/ver/create";
SmuleUrls2.ArrVote = SmuleUrls2.baseUrl + "/arr/vote";
SmuleUrls2.ArrVoteTopic = SmuleUrls2.baseUrl + "/arr/voteTopic";
SmuleUrls2.AvcomponentList = SmuleUrls2.baseUrl + "/avcomponent/list";
SmuleUrls2.AvcomponentsetList = SmuleUrls2.baseUrl + "/avcomponentset/list";
SmuleUrls2.AvfilterAudiofilterList = SmuleUrls2.baseUrl + "/avfilter/audiofilter/list";
SmuleUrls2.Avtemplate = SmuleUrls2.baseUrl + "/avtemplate";
SmuleUrls2.AvtemplateByAccount = SmuleUrls2.baseUrl + "/avtemplate/byAccount";
SmuleUrls2.AvtemplateCategoryList = SmuleUrls2.baseUrl + "/avtemplate/category/list";
SmuleUrls2.AvtemplateCategoryLists = SmuleUrls2.baseUrl + "/avtemplate/category/lists";
SmuleUrls2.AvtemplateCreate = SmuleUrls2.baseUrl + "/avtemplate/create";
SmuleUrls2.AvtemplateDelete = SmuleUrls2.baseUrl + "/avtemplate/delete";
SmuleUrls2.AvtemplateDraft = SmuleUrls2.baseUrl + "/avtemplate/draft";
SmuleUrls2.AvtemplateByIds = SmuleUrls2.baseUrl + "/avtemplate/byIds";
SmuleUrls2.AvtemplateMixlistRec = SmuleUrls2.baseUrl + "/avtemplate/mixlist/rec";
SmuleUrls2.AvtemplateResourceCreate = SmuleUrls2.baseUrl + "/avtemplate/resource/create";
SmuleUrls2.AvtemplateUpdate = SmuleUrls2.baseUrl + "/avtemplate/update";
SmuleUrls2.Banner = SmuleUrls2.baseUrl + "/banner";
SmuleUrls2.Boost = SmuleUrls2.baseUrl + "/boost";
SmuleUrls2.BoostPerf = SmuleUrls2.baseUrl + "/boost/perf";
SmuleUrls2.CardCreate = SmuleUrls2.baseUrl + "/card/create";
SmuleUrls2.CardGet = SmuleUrls2.baseUrl + "/card/get";
SmuleUrls2.Category = SmuleUrls2.baseUrl + "/category";
SmuleUrls2.CategoryList = SmuleUrls2.baseUrl + "/category/list";
SmuleUrls2.Cfire = SmuleUrls2.baseUrl + "/cfire";
SmuleUrls2.CfireClose = SmuleUrls2.baseUrl + "/cfire/close";
SmuleUrls2.CfireCreate = SmuleUrls2.baseUrl + "/cfire/create";
SmuleUrls2.CfireGuestEnd = SmuleUrls2.baseUrl + "/cfire/guest/end";
SmuleUrls2.CfireGuestTerminate = SmuleUrls2.baseUrl + "/cfire/guest/terminate";
SmuleUrls2.CfireHostEnd = SmuleUrls2.baseUrl + "/cfire/host/end";
SmuleUrls2.CfireHostTerminate = SmuleUrls2.baseUrl + "/cfire/host/terminate";
SmuleUrls2.CfireList = SmuleUrls2.baseUrl + "/cfire/list";
SmuleUrls2.CfireListAccount = SmuleUrls2.baseUrl + "/cfire/list/account";
SmuleUrls2.CfireListen = SmuleUrls2.baseUrl + "/cfire/listen";
SmuleUrls2.CfireModerate = SmuleUrls2.baseUrl + "/cfire/moderate";
SmuleUrls2.CfirePerfEnd = SmuleUrls2.baseUrl + "/cfire/perf/end";
SmuleUrls2.CfirePerfStart = SmuleUrls2.baseUrl + "/cfire/perf/start";
SmuleUrls2.CfireReport = SmuleUrls2.baseUrl + "/cfire/report";
SmuleUrls2.CfireReportList = SmuleUrls2.baseUrl + "/cfire/report/list";
SmuleUrls2.CfireSignupAdd = SmuleUrls2.baseUrl + "/cfire/signup/add";
SmuleUrls2.CfireSignupRemove = SmuleUrls2.baseUrl + "/cfire/signup/remove";
SmuleUrls2.CfireSignupTerminate = SmuleUrls2.baseUrl + "/cfire/signup/terminate";
SmuleUrls2.CfireSignupUpdate = SmuleUrls2.baseUrl + "/cfire/signup/update";
SmuleUrls2.CfireSync = SmuleUrls2.baseUrl + "/cfire/sync";
SmuleUrls2.CfireTakeup = SmuleUrls2.baseUrl + "/cfire/takeup";
SmuleUrls2.CfireUpdate = SmuleUrls2.baseUrl + "/cfire/update";
SmuleUrls2.CfireUploadResource = SmuleUrls2.baseUrl + "/cfire/uploadResource";
SmuleUrls2.CommentLike = SmuleUrls2.baseUrl + "/comment/like";
SmuleUrls2.CommentLikes = SmuleUrls2.baseUrl + "/comment/likes";
SmuleUrls2.CommentUnlike = SmuleUrls2.baseUrl + "/comment/unlike";
SmuleUrls2.ConsumableList = SmuleUrls2.baseUrl + "/consumable/list";
SmuleUrls2.ConsumablePurchase = SmuleUrls2.baseUrl + "/consumable/purchase";
SmuleUrls2.ContactClear = SmuleUrls2.baseUrl + "/contact/clear";
SmuleUrls2.ContactFind = SmuleUrls2.baseUrl + "/contact/find";
SmuleUrls2.ConsentUpdate = SmuleUrls2.baseUrl + "/consent/update";
SmuleUrls2.ContestGet = SmuleUrls2.baseUrl + "/contest/get";
SmuleUrls2.ContestScore = SmuleUrls2.baseUrl + "/contest/score";
SmuleUrls2.DebugPreupload = SmuleUrls2.baseUrl + "/debug/preupload";
SmuleUrls2.DebugUpload = SmuleUrls2.baseUrl + "/debug/upload";
SmuleUrls2.Dvcset = SmuleUrls2.baseUrl + "/dvcset";
SmuleUrls2.DiscoveryPerfByAvTemplateList = SmuleUrls2.baseUrl + "/discovery/perf/byAvTemplate/list";
SmuleUrls2.DiscoveryPerfList = SmuleUrls2.baseUrl + "/discovery/perf/list";
SmuleUrls2.DiscoveryPerfListByAvTemplate = SmuleUrls2.baseUrl + "/discovery/perf/listByAvTemplate";
SmuleUrls2.FbConnect = SmuleUrls2.baseUrl + "/fb/connect";
SmuleUrls2.FbDisconnect = SmuleUrls2.baseUrl + "/fb/disconnect";
SmuleUrls2.FbFriendFind = SmuleUrls2.baseUrl + "/fb/friend/find";
SmuleUrls2.FbLogin = SmuleUrls2.baseUrl + "/fb/login";
SmuleUrls2.GameGet = SmuleUrls2.baseUrl + "/game/get";
SmuleUrls2.GamePlayerAchievementGet = SmuleUrls2.baseUrl + "/game/player/achievement/get";
SmuleUrls2.GamePlayerLevelGet = SmuleUrls2.baseUrl + "/game/player/level/get";
SmuleUrls2.GamePlayerRestore = SmuleUrls2.baseUrl + "/game/player/restore";
SmuleUrls2.GamePlayerAchievementSet = SmuleUrls2.baseUrl + "/game/player/achievement/set";
SmuleUrls2.GamePlayerScoreSet = SmuleUrls2.baseUrl + "/game/player/score/set";
SmuleUrls2.GiftCategoryList = SmuleUrls2.baseUrl + "/gift/category/list";
SmuleUrls2.GiftCatalogCategory = SmuleUrls2.baseUrl + "/gift/catalog/category";
SmuleUrls2.GiftGet = SmuleUrls2.baseUrl + "/gift/get";
SmuleUrls2.GiftGive = SmuleUrls2.baseUrl + "/gift/give";
SmuleUrls2.GiftGiveVip = SmuleUrls2.baseUrl + "/gift/give/vip";
SmuleUrls2.GiftGiveVipInBulk = SmuleUrls2.baseUrl + "/gift/give/vip/inBulk";
SmuleUrls2.GiftIsGiftable = SmuleUrls2.baseUrl + "/gift/isGiftable";
SmuleUrls2.GiftList = SmuleUrls2.baseUrl + "/gift/list";
SmuleUrls2.GiftNotificationList = SmuleUrls2.baseUrl + "/gift/notification/list";
SmuleUrls2.GiftPerformanceReceivers = SmuleUrls2.baseUrl + "/gift/performanceReceivers";
SmuleUrls2.GiftRecentTransactions = SmuleUrls2.baseUrl + "/gift/recentTransactions";
SmuleUrls2.GiftReport = SmuleUrls2.baseUrl + "/gift/report";
SmuleUrls2.GiftSearch = SmuleUrls2.baseUrl + "/gift/search";
SmuleUrls2.GiftTopGivers = SmuleUrls2.baseUrl + "/gift/topGivers";
SmuleUrls2.GiftTransactions = SmuleUrls2.baseUrl + "/gift/transactions";
SmuleUrls2.GiftUserCatalog = SmuleUrls2.baseUrl + "/gift/usercatalog";
SmuleUrls2.InviteChat = SmuleUrls2.baseUrl + "/invite/chat";
SmuleUrls2.InviteFollower = SmuleUrls2.baseUrl + "/invite/follower";
SmuleUrls2.InviteList = SmuleUrls2.baseUrl + "/invite/list";
SmuleUrls2.InviteMe = SmuleUrls2.baseUrl + "/invite/me";
SmuleUrls2.InviteSend = SmuleUrls2.baseUrl + "/invite/send";
SmuleUrls2.LoginGuest = SmuleUrls2.baseUrl + "/login/guest";
SmuleUrls2.LoginHuaweiid = SmuleUrls2.baseUrl + "/login/huaweiid";
SmuleUrls2.LoginInfo = SmuleUrls2.baseUrl + "/login/info";
SmuleUrls2.LoginPhone = SmuleUrls2.baseUrl + "/login/phone";
SmuleUrls2.LoginPhonePinResend = SmuleUrls2.baseUrl + "/login/phone/pin/resend";
SmuleUrls2.LoginPhonePinSend = SmuleUrls2.baseUrl + "/login/phone/pin/send";
SmuleUrls2.LoginRefresh = SmuleUrls2.baseUrl + "/login/refresh";
SmuleUrls2.LocLangSet = SmuleUrls2.baseUrl + "/loc/lang/set";
SmuleUrls2.LocResource = SmuleUrls2.baseUrl + "/loc/resource";
SmuleUrls2.Offer = SmuleUrls2.baseUrl + "/offer";
SmuleUrls2.Oauth2Authorize = SmuleUrls2.baseUrl + "/oauth2/authorize";
SmuleUrls2.Oauth2Info = SmuleUrls2.baseUrl + "/oauth2/info";
SmuleUrls2.PaymentBundle = SmuleUrls2.baseUrl + "/payment/bundle";
SmuleUrls2.PerfCreate = SmuleUrls2.baseUrl + "/perf/create";
SmuleUrls2.PerfJoin = SmuleUrls2.baseUrl + "/perf/join";
SmuleUrls2.PerfPreupload = SmuleUrls2.baseUrl + "/perf/preupload";
SmuleUrls2.PerfUpdate = SmuleUrls2.baseUrl + "/perf/update";
SmuleUrls2.PerfUploadVideo = SmuleUrls2.baseUrl + "/perf/uploadVideo";
SmuleUrls2.PerformanceUrl = SmuleUrls2.baseUrl + "/performance";
SmuleUrls2.PerformanceBookmarkSeed = SmuleUrls2.baseUrl + "/performance/bookmarkSeed";
SmuleUrls2.PerformanceBookmarkSeedUpdate = SmuleUrls2.baseUrl + "/performance/bookmarkSeed/update";
SmuleUrls2.PerformanceByKeys = SmuleUrls2.baseUrl + "/performance/byKeys";
SmuleUrls2.PerformanceByFeed = SmuleUrls2.baseUrl + "/performance/byFeed";
SmuleUrls2.PerformanceByPerformer = SmuleUrls2.baseUrl + "/performance/byPerformer";
SmuleUrls2.PerformanceCastAsSeed = SmuleUrls2.baseUrl + "/performance/castAsSeed";
SmuleUrls2.PerformanceChildren = SmuleUrls2.baseUrl + "/performance/children";
SmuleUrls2.PerformanceChildrenSocial = SmuleUrls2.baseUrl + "/performance/children/social";
SmuleUrls2.PerformanceComment = SmuleUrls2.baseUrl + "/performance/comment";
SmuleUrls2.PerformanceCommenters = SmuleUrls2.baseUrl + "/performance/commenters";
SmuleUrls2.PerformanceCommentingInfo = SmuleUrls2.baseUrl + "/performance/commenting/info";
SmuleUrls2.PerformanceCommentReportAbuse = SmuleUrls2.baseUrl + "/performance/commentReportAbuse";
SmuleUrls2.PerformanceConnected = SmuleUrls2.baseUrl + "/performance/connected";
SmuleUrls2.PerformanceCreate = SmuleUrls2.baseUrl + "/performance/create";
SmuleUrls2.PerformanceDelete = SmuleUrls2.baseUrl + "/performance/delete";
SmuleUrls2.PerformanceDeleteComment = SmuleUrls2.baseUrl + "/performance/deleteComment";
SmuleUrls2.PerformanceGetComments = SmuleUrls2.baseUrl + "/performance/getComments";
SmuleUrls2.PerformanceGetLoves = SmuleUrls2.baseUrl + "/performance/getLoves";
SmuleUrls2.PerformanceGiftTransactions = SmuleUrls2.baseUrl + "/performance/giftTransactions";
SmuleUrls2.PerformanceIsBookmarkSeed = SmuleUrls2.baseUrl + "/performance/isBookmarkSeed";
SmuleUrls2.PerformanceJoin = SmuleUrls2.baseUrl + "/performance/join";
SmuleUrls2.PerformanceJoiners = SmuleUrls2.baseUrl + "/performance/joiners";
SmuleUrls2.PerformanceLimits = SmuleUrls2.baseUrl + "/performance/limits";
SmuleUrls2.PerformanceList = SmuleUrls2.baseUrl + "/performance/list";
SmuleUrls2.PerformanceListRec = SmuleUrls2.baseUrl + "/performance/list/rec";
SmuleUrls2.PerformanceListSeeds = SmuleUrls2.baseUrl + "/performance/list/seeds";
SmuleUrls2.PerformanceListDetails = SmuleUrls2.baseUrl + "/performance/listDetails";
SmuleUrls2.PerformanceLists = SmuleUrls2.baseUrl + "/performance/lists";
SmuleUrls2.PerformanceListsRec = SmuleUrls2.baseUrl + "/performance/lists/rec";
SmuleUrls2.PerformanceListen = SmuleUrls2.baseUrl + "/performance/listen";
SmuleUrls2.PerformanceListenStart = SmuleUrls2.baseUrl + "/performance/listenStart";
SmuleUrls2.PerformanceLogRecCompletedArr = SmuleUrls2.baseUrl + "/performance/logRecCompletedArr";
SmuleUrls2.PerformanceLove = SmuleUrls2.baseUrl + "/performance/love";
SmuleUrls2.PerformanceNetwork = SmuleUrls2.baseUrl + "/performance/network";
SmuleUrls2.PerformanceParts = SmuleUrls2.baseUrl + "/performance/parts";
SmuleUrls2.PerformancePlay = SmuleUrls2.baseUrl + "/performance/play";
SmuleUrls2.PerformanceRecentTracks = SmuleUrls2.baseUrl + "/performance/recentTracks";
SmuleUrls2.PerformanceRender = SmuleUrls2.baseUrl + "/performance/render";
SmuleUrls2.PerformanceRenderTrimmed = SmuleUrls2.baseUrl + "/performance/render/trimmed";
SmuleUrls2.PerformanceReportAbuse = SmuleUrls2.baseUrl + "/performance/reportAbuse";
SmuleUrls2.PerformanceSearchByTag = SmuleUrls2.baseUrl + "/performance/search/byTag";
SmuleUrls2.PerformanceSeedExtend = SmuleUrls2.baseUrl + "/performance/seed/extend";
SmuleUrls2.PerformanceShow = SmuleUrls2.baseUrl + "/performance/show";
SmuleUrls2.PerformanceTracks = SmuleUrls2.baseUrl + "/performance/tracks";
SmuleUrls2.PerformanceTracksDelete = SmuleUrls2.baseUrl + "/performance/tracks/delete";
SmuleUrls2.PerformanceUnvote = SmuleUrls2.baseUrl + "/performance/unvote";
SmuleUrls2.PerformanceUpnext = SmuleUrls2.baseUrl + "/performance/upnext";
SmuleUrls2.PerformanceVote = SmuleUrls2.baseUrl + "/performance/vote";
SmuleUrls2.PerformanceVoting = SmuleUrls2.baseUrl + "/performance/voting";
SmuleUrls2.getPerformanceUploadUrl = (hostName) => "https://" + hostName + "/v2/perf/upload";
SmuleUrls2.Pref = SmuleUrls2.baseUrl + "/pref";
SmuleUrls2.PrefUpdate = SmuleUrls2.baseUrl + "/pref/update";
SmuleUrls2.Promotion = SmuleUrls2.baseUrl + "/promotion";
SmuleUrls2.PlaylistExplore = SmuleUrls2.baseUrl + "/playlist/explore";
SmuleUrls2.PlaylistGet = SmuleUrls2.baseUrl + "/playlist/get";
SmuleUrls2.PushTokenRegister = SmuleUrls2.baseUrl + "/pushToken/register";
SmuleUrls2.ProfileSearch = SmuleUrls2.baseUrl + "/profile/search";
SmuleUrls2.ProfileSearchAutocomplete = SmuleUrls2.baseUrl + "/profile/search/autocomplete";
SmuleUrls2.RecAccount = SmuleUrls2.baseUrl + "/rec/account";
SmuleUrls2.RecAcct = SmuleUrls2.baseUrl + "/rec/acct";
SmuleUrls2.RecComp = SmuleUrls2.baseUrl + "/rec/comp";
SmuleUrls2.RecCompLocale = SmuleUrls2.baseUrl + "/rec/comp/locale";
SmuleUrls2.RecCompSimilar = SmuleUrls2.baseUrl + "/rec/comp/similar";
SmuleUrls2.RecSelect = SmuleUrls2.baseUrl + "/rec/select";
SmuleUrls2.RecSongSimilar = SmuleUrls2.baseUrl + "/rec/song/similar";
SmuleUrls2.RecSongs = SmuleUrls2.baseUrl + "/rec/songs";
SmuleUrls2.RecTsrch = SmuleUrls2.baseUrl + "/rec/tsrch";
SmuleUrls2.Settings = SmuleUrls2.baseUrl + "/settings";
SmuleUrls2.SocialActivityFeed = SmuleUrls2.baseUrl + "/social/activityFeed";
SmuleUrls2.SocialBlockList = SmuleUrls2.baseUrl + "/social/block/list";
SmuleUrls2.SocialBlockUpdate = SmuleUrls2.baseUrl + "/social/block/update";
SmuleUrls2.SocialFeed = SmuleUrls2.baseUrl + "/social/feed";
SmuleUrls2.SocialFeedList = SmuleUrls2.baseUrl + "/social/feed/list";
SmuleUrls2.SocialFollowee = SmuleUrls2.baseUrl + "/social/followee";
SmuleUrls2.SocialFolloweeUpdate = SmuleUrls2.baseUrl + "/social/followee/update";
SmuleUrls2.SocialFollower = SmuleUrls2.baseUrl + "/social/follower";
SmuleUrls2.SocialFollowerByActiveness = SmuleUrls2.baseUrl + "/social/follower/byActiveness";
SmuleUrls2.SocialInfo = SmuleUrls2.baseUrl + "/social/info";
SmuleUrls2.SocialIsFollowing = SmuleUrls2.baseUrl + "/social/isFollowing";
SmuleUrls2.SocialMyFeed = SmuleUrls2.baseUrl + "/social/myFeed";
SmuleUrls2.SocialNotificationActivity = SmuleUrls2.baseUrl + "/social/notification/activity";
SmuleUrls2.SocialNotificationList = SmuleUrls2.baseUrl + "/social/notification/list";
SmuleUrls2.SocialNotificationLookup = SmuleUrls2.baseUrl + "/social/notification/lookup";
SmuleUrls2.SocialNotificationNewCounts = SmuleUrls2.baseUrl + "/social/notification/new/counts";
SmuleUrls2.Songbook = SmuleUrls2.baseUrl + "/songbook";
SmuleUrls2.SongbookGuest = SmuleUrls2.baseUrl + "/songbook/guest";
SmuleUrls2.SongbookUpdate = SmuleUrls2.baseUrl + "/songbook/update";
SmuleUrls2.StoreBalance = SmuleUrls2.baseUrl + "/store/balance";
SmuleUrls2.StoreCoinSpend = SmuleUrls2.baseUrl + "/store/coin/spend";
SmuleUrls2.StoreCoinpackList = SmuleUrls2.baseUrl + "/store/coinpack/list";
SmuleUrls2.StoreConsumablePurchaseConfirm = SmuleUrls2.baseUrl + "/store/consumable/purchase/confirm";
SmuleUrls2.StoreCreditPlans = SmuleUrls2.baseUrl + "/store/credit/plans";
SmuleUrls2.StoreCreditPurchaseConfirm = SmuleUrls2.baseUrl + "/store/credit/purchase/confirm";
SmuleUrls2.StoreGoogleSubscriptionValidate = SmuleUrls2.baseUrl + "/store/google/subscription/validate";
SmuleUrls2.StorePlayerEntitlementList = SmuleUrls2.baseUrl + "/store/player/entitlement/list";
SmuleUrls2.StoreProductAcquire = SmuleUrls2.baseUrl + "/store/product/acquire";
SmuleUrls2.StoreProductAcquireFree = SmuleUrls2.baseUrl + "/store/product/acquire_free";
SmuleUrls2.StoreProductPurchase = SmuleUrls2.baseUrl + "/store/product/purchase";
SmuleUrls2.StoreProductReward = SmuleUrls2.baseUrl + "/store/product/reward";
SmuleUrls2.StoreRewardCoins = SmuleUrls2.baseUrl + "/store/rewardCoins";
SmuleUrls2.StoreSkuPlansConsumables = SmuleUrls2.baseUrl + "/store/sku/plans/consumables";
SmuleUrls2.StoreSkuType = SmuleUrls2.baseUrl + "/store/sku/type";
SmuleUrls2.StoreSong = SmuleUrls2.baseUrl + "/store/song";
SmuleUrls2.StoreSoundfont = SmuleUrls2.baseUrl + "/store/soundfont";
SmuleUrls2.StoreStore = SmuleUrls2.baseUrl + "/store/store";
SmuleUrls2.StoreStreamLog = SmuleUrls2.baseUrl + "/store/stream/log";
SmuleUrls2.StoreSubscriptionStatus = SmuleUrls2.baseUrl + "/store/subscription/status";
SmuleUrls2.StoreSubscriptionUpdate = SmuleUrls2.baseUrl + "/store/subscription/update";
SmuleUrls2.SparkChatList = SmuleUrls2.baseUrl + "/spark/chat/list";
SmuleUrls2.SparkChatOffline = SmuleUrls2.baseUrl + "/spark/chat/offline";
SmuleUrls2.SparkChatUpdate = SmuleUrls2.baseUrl + "/spark/chat/update";
SmuleUrls2.SparkPushMuteState = SmuleUrls2.baseUrl + "/spark/push/mutestate";
SmuleUrls2.SparkPushMuteStateUpdate = SmuleUrls2.baseUrl + "/spark/push/mutestate/update";
SmuleUrls2.SingCoverPhotoDelete = SmuleUrls2.baseUrl + "/sing/coverPhoto/delete";
SmuleUrls2.SingCoverPhotoUpload = SmuleUrls2.baseUrl + "/sing/coverPhoto/upload";
SmuleUrls2.SingOpenCallGet = SmuleUrls2.baseUrl + "/sing/opencall/get";
SmuleUrls2.SingOpenCallGetByPlayer = SmuleUrls2.baseUrl + "/sing/opencall/getByPlayer";
SmuleUrls2.SingOpenCallGetBySong = SmuleUrls2.baseUrl + "/sing/opencall/getBySong";
SmuleUrls2.SingOpenCallGetSuggested = SmuleUrls2.baseUrl + "/sing/opencall/getSuggested";
SmuleUrls2.SingOpenCallSetPrivacy = SmuleUrls2.baseUrl + "/sing/opencall/setPrivacy";
SmuleUrls2.SingPerfOpenCallByPlayer = SmuleUrls2.baseUrl + "/sing/perfOpencall/byPlayer";
SmuleUrls2.SingProfileUpdate = SmuleUrls2.baseUrl + "/sing/profile/update";
SmuleUrls2.SingUserProfile = SmuleUrls2.baseUrl + "/sing/user/profile";
SmuleUrls2.SingUserProfileMe = SmuleUrls2.baseUrl + "/sing/user/profile/me";
SmuleUrls2.SfamAdminBan = SmuleUrls2.baseUrl + "/sfam/admin/ban";
SmuleUrls2.SfamAdminChangeRole = SmuleUrls2.baseUrl + "/sfam/admin/member/changerole";
SmuleUrls2.SfamAdminCFireClose = SmuleUrls2.baseUrl + "/sfam/admin/cfire/close";
SmuleUrls2.SfamAdminMemberBanList = SmuleUrls2.baseUrl + "/sfam/admin/ban/list";
SmuleUrls2.SfamAdminMemberUnban = SmuleUrls2.baseUrl + "/sfam/admin/unban";
SmuleUrls2.SfamAdminMembershipRequestApprove = SmuleUrls2.baseUrl + "/sfam/admin/mbrship/rqst/approve";
SmuleUrls2.SfamAdminMembershipRequestReject = SmuleUrls2.baseUrl + "/sfam/admin/mbrship/rqst/reject";
SmuleUrls2.SfamCountByMyOwnership = SmuleUrls2.baseUrl + "/sfam/count/myOwnership";
SmuleUrls2.SfamCountMyPendingMembership = SmuleUrls2.baseUrl + "/sfam/count/myPendingMbrship";
SmuleUrls2.SfamCoverPhotoUpload = SmuleUrls2.baseUrl + "/sfam/coverPhoto/upload";
SmuleUrls2.SfamCreate = SmuleUrls2.baseUrl + "/sfam/create";
SmuleUrls2.SfamDelete = SmuleUrls2.baseUrl + "/sfam/delete";
SmuleUrls2.SfamInfo = SmuleUrls2.baseUrl + "/sfam/info";
SmuleUrls2.SfamList = SmuleUrls2.baseUrl + "/sfam/list";
SmuleUrls2.SfamListByAccountMember = SmuleUrls2.baseUrl + "/sfam/list/byAcct/member";
SmuleUrls2.SfamListByAccountOwner = SmuleUrls2.baseUrl + "/sfam/list/byAcct/owner";
SmuleUrls2.SfamListByAccountRoles = SmuleUrls2.baseUrl + "/sfam/list/byAcct/roles";
SmuleUrls2.SfamListMyRequests = SmuleUrls2.baseUrl + "/sfam/list/myRqst";
SmuleUrls2.SfamListMyInvitation = SmuleUrls2.baseUrl + "/sfam/list/myInvtn";
SmuleUrls2.SfamMemberLeave = SmuleUrls2.baseUrl + "/sfam/member/leave";
SmuleUrls2.SfamMemberList = SmuleUrls2.baseUrl + "/sfam/member/list";
SmuleUrls2.SfamMemberReport = SmuleUrls2.baseUrl + "/sfam/member/report";
SmuleUrls2.SfamMembershipInvitationAccept = SmuleUrls2.baseUrl + "/sfam/mbrship/invtn/accept";
SmuleUrls2.SfamMembershipInvitationCancel = SmuleUrls2.baseUrl + "/sfam/mbrship/invtn/cancel";
SmuleUrls2.SfamMembershipInvitationReject = SmuleUrls2.baseUrl + "/sfam/mbrship/invtn/reject";
SmuleUrls2.SfamMembershipInvitationSend = SmuleUrls2.baseUrl + "/sfam/mbrship/invtn/send";
SmuleUrls2.SfamMembershipRequestRoles = SmuleUrls2.baseUrl + "/sfam/mbrship/rqst/roles";
SmuleUrls2.SfamMembershipRequestSend = SmuleUrls2.baseUrl + "/sfam/mbrship/rqst/send";
SmuleUrls2.SfamPostAdd = SmuleUrls2.baseUrl + "/sfam/post/add";
SmuleUrls2.SfamPostFeed = SmuleUrls2.baseUrl + "/sfam/post/feed";
SmuleUrls2.SfamPostRemove = SmuleUrls2.baseUrl + "/sfam/post/remove";
SmuleUrls2.SfamSearchHandle = SmuleUrls2.baseUrl + "/sfam/search/handle";
SmuleUrls2.SfamUpdate = SmuleUrls2.baseUrl + "/sfam/update";
SmuleUrls2.Search = SmuleUrls2.baseUrl + "/search";
SmuleUrls2.SearchAutocomplete = SmuleUrls2.baseUrl + "/search/autocomplete";
SmuleUrls2.SearchGlobal = SmuleUrls2.baseUrl + "/search/global";
SmuleUrls2.SearchSongbook = SmuleUrls2.baseUrl + "/search/songbook";
SmuleUrls2.SearchSongbookAutocomplete = SmuleUrls2.baseUrl + "/search/songbook/autocomplete";
SmuleUrls2.SongPlay = SmuleUrls2.baseUrl + "/song/play";
SmuleUrls2.StudioPerformance = SmuleUrls2.baseUrl + "/studio/performance";
SmuleUrls2.StudioPerformanceByPerformer = SmuleUrls2.baseUrl + "/studio/performance/byPerformer";
SmuleUrls2.StudioPerformanceChildren = SmuleUrls2.baseUrl + "/studio/performance/children";
SmuleUrls2.StudioPerformanceList = SmuleUrls2.baseUrl + "/studio/performance/list";
SmuleUrls2.StudioSearchSegPerf = SmuleUrls2.baseUrl + "/studio/search/segPerf";
SmuleUrls2.StkrList = SmuleUrls2.baseUrl + "/stkr/list";
SmuleUrls2.Topic = SmuleUrls2.baseUrl + "/topic";
SmuleUrls2.TopicChoose = SmuleUrls2.baseUrl + "/topic/choose";
SmuleUrls2.TopicOnboarding = SmuleUrls2.baseUrl + "/topic/onboarding";
SmuleUrls2.TopicOption = SmuleUrls2.baseUrl + "/topic/option";
SmuleUrls2.TopicSelect = SmuleUrls2.baseUrl + "/topic/select";
SmuleUrls2.TrackUploadAudio = SmuleUrls2.baseUrl + "/track/uploadAudio";
SmuleUrls2.TrackUploadAudioResource = SmuleUrls2.baseUrl + "/track/uploadAudioResource";
SmuleUrls2.TrackUploadTrackAudio = SmuleUrls2.baseUrl + "/track/uploadTrackAudio";
SmuleUrls2.TrackUploadVideo = SmuleUrls2.baseUrl + "/track/uploadVideo";
SmuleUrls2.UserActivationSend = SmuleUrls2.baseUrl + "/user/activation/send";
SmuleUrls2.UserBlurb = SmuleUrls2.baseUrl + "/user/blurb";
SmuleUrls2.UserBlurbUpdate = SmuleUrls2.baseUrl + "/user/blurb/update";
SmuleUrls2.UserConnectedPhone = SmuleUrls2.baseUrl + "/user/connectedPhone";
SmuleUrls2.UserDeviceLogin = SmuleUrls2.baseUrl + "/user/device/login";
SmuleUrls2.UserDeviceLookup = SmuleUrls2.baseUrl + "/user/device/lookup";
SmuleUrls2.UserEmailExistingCodeSend = SmuleUrls2.baseUrl + "/user/email/existing/code/send";
SmuleUrls2.UserEmailExistingConfirm = SmuleUrls2.baseUrl + "/user/email/existing/confirm";
SmuleUrls2.UserEmailExistingResend = SmuleUrls2.baseUrl + "/user/email/existing/resend";
SmuleUrls2.UserEmailRegisterComplete = SmuleUrls2.baseUrl + "/user/email/register/complete";
SmuleUrls2.UserEmailRegisterResend = SmuleUrls2.baseUrl + "/user/email/register/resend";
SmuleUrls2.UserEmailUpdateConfirm = SmuleUrls2.baseUrl + "/user/email/update/confirm";
SmuleUrls2.UserEmailUpdateResend = SmuleUrls2.baseUrl + "/user/email/update/resend";
SmuleUrls2.UserEmailRegister = SmuleUrls2.baseUrl + "/user/emailRegister";
SmuleUrls2.UserGoogleLogin = SmuleUrls2.baseUrl + "/user/google/login";
SmuleUrls2.UserGuestLogin = SmuleUrls2.baseUrl + "/user/guestLogin";
SmuleUrls2.UserInit = SmuleUrls2.baseUrl + "/user/init";
SmuleUrls2.UserLogin = SmuleUrls2.baseUrl + "/user/login";
SmuleUrls2.UserLookup = SmuleUrls2.baseUrl + "/user/lookup";
SmuleUrls2.UserPasswordReset = SmuleUrls2.baseUrl + "/user/password/reset";
SmuleUrls2.UserPersonalUpdate = SmuleUrls2.baseUrl + "/user/personal/update";
SmuleUrls2.UserProfileUpdate = SmuleUrls2.baseUrl + "/user/personal/update";
SmuleUrls2.UserPhoneConnect = SmuleUrls2.baseUrl + "/user/phone/connect";
SmuleUrls2.UserPictureDelete = SmuleUrls2.baseUrl + "/user/picture/delete";
SmuleUrls2.UserProfile = SmuleUrls2.baseUrl + "/user/profile";
SmuleUrls2.UserSearchAutocomplete = SmuleUrls2.baseUrl + "/user/search/autocomplete";
SmuleUrls2.UserSearchByHandle = SmuleUrls2.baseUrl + "/user/search/byHandle";
SmuleUrls2.UserTippingHandleDelete = SmuleUrls2.baseUrl + "/user/tipping/handle/delete";
SmuleUrls2.UserTippingHandleUpdate = SmuleUrls2.baseUrl + "/user/tipping/handle/update";
SmuleUrls2.UserTippingProviders = SmuleUrls2.baseUrl + "/user/tipping/providers";
SmuleUrls2.UserTippingUpdate = SmuleUrls2.baseUrl + "/user/tipping/update";
SmuleUrls2.UserUpdate = SmuleUrls2.baseUrl + "/user/update";
SmuleUrls2.UserUploadPicture = SmuleUrls2.baseUrl + "/user/uploadPicture";
SmuleUrls2.GuestProhibited = /* @__PURE__ */ new Set([
SmuleUrls2.AccountDeleteSubmit,
SmuleUrls2.AccountInfo,
SmuleUrls2.AccountStats,
SmuleUrls2.AccountWallet,
SmuleUrls2.AnalyticsCfireStats,
SmuleUrls2.Aplist,
SmuleUrls2.AplistCreate,
SmuleUrls2.AplistDelete,
SmuleUrls2.AplistFavorites,
SmuleUrls2.AplistFavoritesCreate,
SmuleUrls