private void LoadRemoteConfig(Action callback)
 {
     WebHelper2.DownloadStringASync("https://api.vrchat.cloud/api/1/config", delegate(string s)
     {
         Dictionary <object, object> remoteC = (Dictionary <object, object>)Parser.ParseJson(s);
         Dictionary <object, object> urls    = (Dictionary <object, object>)remoteC["downloadUrls"];
         remoteConfig              = new RemoteConfig();
         remoteConfig.sdk2         = (string)urls["sdk2"];
         remoteConfig.sdk3_worlds  = (string)urls["sdk3-worlds"];
         remoteConfig.sdk3_avatars = (string)urls["sdk3-avatars"];
         callback();
     });
 }
        private static Task <RemoteConfig> LoadRemoteConfig()
        {
            return(Task.Run(() =>
            {
                var t = new TaskCompletionSource <RemoteConfig>();

                WebHelper2.DownloadStringASync("https://api.vrchat.cloud/api/1/config", delegate(string s)
                {
                    Dictionary <string, object> remoteC = (Dictionary <string, object>)Parser.ParseJson(s);
                    Dictionary <string, object> urls = (Dictionary <string, object>)remoteC["downloadUrls"];
                    RemoteConfig remoteConfig = new RemoteConfig();
                    remoteConfig.sdk2 = (string)urls["sdk2"];
                    remoteConfig.sdk3_worlds = (string)urls["sdk3-worlds"];
                    remoteConfig.sdk3_avatars = (string)urls["sdk3-avatars"];
                    t.TrySetResult(remoteConfig);
                });
                return t.Task;
            }));
        }