<?php

if (!defined('ABSPATH')) {
    exit;
}
$this_sdk_version = '2.4.2';
global $fs_active_plugins;
if (!function_exists('fs_find_caller_plugin_file')) {
    require_once dirname(__FILE__) . '/includes/fs-essential-functions.php';
}
$file_path = fs_normalize_path(__FILE__);
$fs_root_path = dirname($file_path);
$themes_directory = get_theme_root(get_stylesheet());
$themes_directory_name = basename($themes_directory);
$theme_candidate_basename = basename(dirname($fs_root_path)) . '/' . basename($fs_root_path);
if ($file_path == fs_normalize_path(realpath(trailingslashit($themes_directory) . $theme_candidate_basename . '/' . basename($file_path)))) {
    $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
    $is_theme = true;
} else {
    $this_sdk_relative_path = plugin_basename($fs_root_path);
    $is_theme = false;
}
if (!isset($fs_active_plugins)) {
    $fs_active_plugins = get_option('fs_active_plugins', new stdClass());
    if (!isset($fs_active_plugins->plugins)) {
        $fs_active_plugins->plugins = array();
    }
}
if (empty($fs_active_plugins->abspath)) {
    $fs_active_plugins->abspath = ABSPATH;
} else {
    if (ABSPATH !== $fs_active_plugins->abspath) {
        $fs_active_plugins->abspath = ABSPATH;
        $fs_active_plugins->plugins = array();
        unset($fs_active_plugins->newest);
    } else {
        $has_changes = false;
        foreach ($fs_active_plugins->plugins as $sdk_path => $data) {
            if (!file_exists((isset($data->type) && 'theme' === $data->type ? $themes_directory : WP_PLUGIN_DIR) . '/' . $sdk_path)) {
                unset($fs_active_plugins->plugins[$sdk_path]);
                if (!empty($fs_active_plugins->newest) && $sdk_path === $fs_active_plugins->newest->sdk_path) {
                    unset($fs_active_plugins->newest);
                }
                $has_changes = true;
            }
        }
        if ($has_changes) {
            if (empty($fs_active_plugins->plugins)) {
                unset($fs_active_plugins->newest);
            }
            update_option('fs_active_plugins', $fs_active_plugins);
        }
    }
}
if (!function_exists('fs_find_direct_caller_plugin_file')) {
    require_once dirname(__FILE__) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
}
if (!function_exists('fs_get_plugins')) {
    require_once dirname(__FILE__) . '/includes/supplements/fs-essential-functions-2.2.1.php';
}
if (!isset($fs_active_plugins->plugins[$this_sdk_relative_path]) || $this_sdk_version != $fs_active_plugins->plugins[$this_sdk_relative_path]->version) {
    if ($is_theme) {
        $plugin_path = basename(dirname($this_sdk_relative_path));
    } else {
        $plugin_path = plugin_basename(fs_find_direct_caller_plugin_file($file_path));
    }
    $fs_active_plugins->plugins[$this_sdk_relative_path] = (object) array('version' => $this_sdk_version, 'type' => $is_theme ? 'theme' : 'plugin', 'timestamp' => time(), 'plugin_path' => $plugin_path);
}
$is_current_sdk_newest = isset($fs_active_plugins->newest) && $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path;
if (!isset($fs_active_plugins->newest)) {
    fs_update_sdk_newest_version($this_sdk_relative_path, $fs_active_plugins->plugins[$this_sdk_relative_path]->plugin_path);
    $is_current_sdk_newest = true;
} else {
    if (version_compare($fs_active_plugins->newest->version, $this_sdk_version, '<')) {
        fs_update_sdk_newest_version($this_sdk_relative_path, $fs_active_plugins->plugins[$this_sdk_relative_path]->plugin_path);
        if (class_exists('Freemius')) {
            if (!$fs_active_plugins->newest->in_activation) {
                fs_newest_sdk_plugin_first();
            }
            fs_redirect($_SERVER['REQUEST_URI']);
        }
    } else {
        if (!function_exists('get_plugins')) {
            require_once ABSPATH . 'wp-admin/includes/plugin.php';
        }
        $fs_newest_sdk = $fs_active_plugins->newest;
        $fs_newest_sdk = $fs_active_plugins->plugins[$fs_newest_sdk->sdk_path];
        $is_newest_sdk_type_theme = isset($fs_newest_sdk->type) && 'theme' === $fs_newest_sdk->type;
        if (!$is_newest_sdk_type_theme) {
            $is_newest_sdk_plugin_active = is_plugin_active($fs_newest_sdk->plugin_path);
        } else {
            $current_theme = wp_get_theme();
            $is_newest_sdk_plugin_active = $current_theme->stylesheet === $fs_newest_sdk->plugin_path;
            $current_theme_parent = $current_theme->parent();
            if (!$is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme) {
                $is_newest_sdk_plugin_active = $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet;
            }
        }
        if ($is_current_sdk_newest && !$is_newest_sdk_plugin_active && !$fs_active_plugins->newest->in_activation) {
            $fs_active_plugins->newest->in_activation = true;
            update_option('fs_active_plugins', $fs_active_plugins);
        }
        if (!$is_theme) {
            $sdk_starter_path = fs_normalize_path(WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php');
        } else {
            $sdk_starter_path = fs_normalize_path($themes_directory . '/' . str_replace("../{$themes_directory_name}/", '', $this_sdk_relative_path) . '/start.php');
        }
        $is_newest_sdk_path_valid = ($is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation) && file_exists($sdk_starter_path);
        if (!$is_newest_sdk_path_valid && !$is_current_sdk_newest) {
            unset($fs_active_plugins->plugins[$fs_active_plugins->newest->sdk_path]);
        }
        if (!($is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation) || !$is_newest_sdk_path_valid || $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path && version_compare($fs_active_plugins->newest->version, $this_sdk_version, '>')) {
            fs_fallback_to_newest_active_sdk();
        } else {
            if ($is_newest_sdk_plugin_active && $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path && ($fs_active_plugins->newest->in_activation || class_exists('Freemius') && (!defined('WP_FS__SDK_VERSION') || version_compare(WP_FS__SDK_VERSION, $this_sdk_version, '<')))) {
                if ($fs_active_plugins->newest->in_activation && !$is_newest_sdk_type_theme) {
                    $fs_active_plugins->newest->in_activation = false;
                    update_option('fs_active_plugins', $fs_active_plugins);
                }
                if (fs_newest_sdk_plugin_first()) {
                    if (class_exists('Freemius')) {
                        fs_redirect($_SERVER['REQUEST_URI']);
                    }
                }
            }
        }
    }
}
if (class_exists('Freemius')) {
    return;
}
if (version_compare($this_sdk_version, $fs_active_plugins->newest->version, '<')) {
    $newest_sdk = $fs_active_plugins->plugins[$fs_active_plugins->newest->sdk_path];
    $plugins_or_theme_dir_path = !isset($newest_sdk->type) || 'theme' !== $newest_sdk->type ? WP_PLUGIN_DIR : $themes_directory;
    $newest_sdk_starter = fs_normalize_path($plugins_or_theme_dir_path . '/' . str_replace("../{$themes_directory_name}/", '', $fs_active_plugins->newest->sdk_path) . '/start.php');
    if (file_exists($newest_sdk_starter)) {
        fs_newest_sdk_plugin_first();
        require_once $newest_sdk_starter;
        return;
    }
}
if (!class_exists('Freemius')) {
    if (!defined('WP_FS__SDK_VERSION')) {
        define('WP_FS__SDK_VERSION', $this_sdk_version);
    }
    $plugins_or_theme_dir_path = fs_normalize_path(trailingslashit($is_theme ? $themes_directory : WP_PLUGIN_DIR));
    if (0 === strpos($file_path, $plugins_or_theme_dir_path)) {
    } else {
        $sdk_symlink = null;
        if (isset($fs_active_plugins->plugins[$this_sdk_relative_path]) && is_object($fs_active_plugins->plugins[$this_sdk_relative_path]) && !empty($fs_active_plugins->plugins[$this_sdk_relative_path]->sdk_symlink)) {
            $sdk_symlink = $fs_active_plugins->plugins[$this_sdk_relative_path]->sdk_symlink;
            if (0 === strpos($sdk_symlink, $plugins_or_theme_dir_path)) {
                $sdk_symlink = substr($sdk_symlink, strlen($plugins_or_theme_dir_path));
                $fs_active_plugins->plugins[$this_sdk_relative_path]->sdk_symlink = $sdk_symlink;
                update_option('fs_active_plugins', $fs_active_plugins);
            }
            $realpath = realpath($plugins_or_theme_dir_path . $sdk_symlink);
            if (!is_string($realpath) || !file_exists($realpath)) {
                $sdk_symlink = null;
            }
        }
        if (empty($sdk_symlink)) {
            $partial_path_right = basename($file_path);
            $partial_path_left = dirname($file_path);
            $realpath = realpath($plugins_or_theme_dir_path . $partial_path_right);
            while ('/' !== $partial_path_left && (false === $realpath || $file_path !== fs_normalize_path($realpath))) {
                $partial_path_right = trailingslashit(basename($partial_path_left)) . $partial_path_right;
                $partial_path_left_prev = $partial_path_left;
                $partial_path_left = dirname($partial_path_left_prev);
                if ($partial_path_left === $partial_path_left_prev) {
                    $partial_path_left = '';
                    break;
                }
                $realpath = realpath($plugins_or_theme_dir_path . $partial_path_right);
            }
            if (!empty($partial_path_left) && '/' !== $partial_path_left) {
                $sdk_symlink = fs_normalize_path(dirname($partial_path_right));
                if (isset($fs_active_plugins->plugins[$this_sdk_relative_path]) && is_object($fs_active_plugins->plugins[$this_sdk_relative_path])) {
                    $fs_active_plugins->plugins[$this_sdk_relative_path]->sdk_symlink = $sdk_symlink;
                    update_option('fs_active_plugins', $fs_active_plugins);
                }
            }
        }
        if (!empty($sdk_symlink)) {
            define('WP_FS__DIR', $plugins_or_theme_dir_path . $sdk_symlink);
        }
    }
    require_once dirname(__FILE__) . '/require.php';
    function freemius($module_id)
    {
        return Freemius::instance($module_id);
    }
    function fs_init($slug, $plugin_id, $public_key, $is_live = true, $is_premium = true)
    {
        $fs = Freemius::instance($plugin_id, $slug, true);
        $fs->init($plugin_id, $public_key, $is_live, $is_premium);
        return $fs;
    }
    function fs_dynamic_init($module)
    {
        $fs = Freemius::instance($module['id'], $module['slug'], true);
        $fs->dynamic_init($module);
        return $fs;
    }
    function fs_dump_log()
    {
        FS_Logger::dump();
    }
}