{"id":3349,"date":"2026-09-30T11:54:28","date_gmt":"2026-09-30T11:54:28","guid":{"rendered":"https:\/\/rbc-riven.com\/?page_id=3349"},"modified":"2026-09-30T17:16:27","modified_gmt":"2026-09-30T17:16:27","slug":"matchup-vods","status":"publish","type":"page","link":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/","title":{"rendered":"VODs de Matchups Riven"},"content":{"rendered":"\n<style data-wp-block-html=\"css\">\n.rbc-rh-role-icon {\n    width: 22px !important;\n    height: 22px !important;\n    object-fit: contain;\n    display: block;\n}\n<\/style>\n\n\n    <div id=\"rbc-riven-history\">\n\n        <div class=\"rbc-rh-header\">\n\n            <div>\n\n                <div class=\"rbc-rh-kicker\">\n                    RIVEN\n                <\/div>\n\n                <h2>\n                    Game History\n                <\/h2>\n\n                <div class=\"rbc-rh-subtitle\">\n                    Parties r\u00e9centes s\u00e9lectionn\u00e9es\n                <\/div>\n\n            <\/div>\n\n            \n        <\/div>\n\n\n        <div class=\"rbc-rh-filters\">\n\n            <div class=\"rbc-rh-filter-search\">\n                <span class=\"rbc-rh-filter-label\">CHAMPION<\/span>\n                <input\n                    type=\"search\"\n                    id=\"rbc-rh-champion-filter\"\n                    class=\"rbc-rh-champion-input\"\n                    placeholder=\"Rechercher un champion\u2026\"\n                    autocomplete=\"off\"\n                    spellcheck=\"false\"\n                >\n            <\/div>\n\n            <div class=\"rbc-rh-lane-filters\">\n\n                <button\n                    type=\"button\"\n                    class=\"rbc-rh-lane-filter active\"\n                    data-lane=\"\"\n                    aria-label=\"Toutes les lanes\"\n                    title=\"Toutes les lanes\"\n                >\n                    <span class=\"rbc-rh-lane-all\">ALL<\/span>\n                <\/button>\n\n                <button\n                    type=\"button\"\n                    class=\"rbc-rh-lane-filter\"\n                    data-lane=\"TOP\"\n                    aria-label=\"Top\"\n                    title=\"Top\"\n                >\n                    <img decoding=\"async\"\n                        src=\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/top.png\"\n                        alt=\"Top\"\n                        loading=\"lazy\"\n                    >\n                <\/button>\n\n                <button\n                    type=\"button\"\n                    class=\"rbc-rh-lane-filter\"\n                    data-lane=\"JUNGLE\"\n                    aria-label=\"Jungle\"\n                    title=\"Jungle\"\n                >\n                    <img decoding=\"async\"\n                        src=\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/jungle.png\"\n                        alt=\"Jungle\"\n                        loading=\"lazy\"\n                    >\n                <\/button>\n\n                <button\n                    type=\"button\"\n                    class=\"rbc-rh-lane-filter\"\n                    data-lane=\"MID\"\n                    aria-label=\"Mid\"\n                    title=\"Mid\"\n                >\n                    <img decoding=\"async\"\n                        src=\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/midlane.png\"\n                        alt=\"Mid\"\n                        loading=\"lazy\"\n                    >\n                <\/button>\n\n                <button\n                    type=\"button\"\n                    class=\"rbc-rh-lane-filter\"\n                    data-lane=\"BOT\"\n                    aria-label=\"Bot\"\n                    title=\"Bot\"\n                >\n                    <img decoding=\"async\"\n                        src=\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/bot.png\"\n                        alt=\"Bot\"\n                        loading=\"lazy\"\n                    >\n                <\/button>\n\n                <button\n                    type=\"button\"\n                    class=\"rbc-rh-lane-filter\"\n                    data-lane=\"SUPPORT\"\n                    aria-label=\"Support\"\n                    title=\"Support\"\n                >\n                    <img decoding=\"async\"\n                        src=\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/support.png\"\n                        alt=\"Support\"\n                        loading=\"lazy\"\n                    >\n                <\/button>\n\n            <\/div>\n\n        <\/div>\n\n\n        <div\n            id=\"rbc-rh-games\"\n            class=\"rbc-rh-games\"\n        >\n\n            <div class=\"rbc-rh-loading\">\n                Chargement des parties\u2026\n            <\/div>\n\n        <\/div>\n\n\n        <div class=\"rbc-rh-attribution\">\n            Donn\u00e9es de parties fournies par\n            <a\n                href=\"https:\/\/op.gg\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n            >\n                OP.GG\n            <\/a>.\n        <\/div>\n\n    <\/div>\n\n\n    <style>\n\n    #rbc-riven-history {\n        width:100%;\n        max-width:1100px;\n        margin:0 auto;\n        color:#f4f1ff;\n        font-family:inherit;\n    }\n\n    #rbc-riven-history *,\n    #rbc-riven-history *::before,\n    #rbc-riven-history *::after {\n        box-sizing:border-box;\n    }\n\n    .rbc-rh-header {\n        display:flex;\n        align-items:flex-end;\n        justify-content:space-between;\n        gap:20px;\n        margin-bottom:22px;\n    }\n\n    .rbc-rh-kicker {\n        color:#9d8cff;\n        font-size:11px;\n        font-weight:800;\n        letter-spacing:.18em;\n        margin-bottom:4px;\n    }\n\n    .rbc-rh-header h2 {\n        margin:0;\n        color:#fff;\n        font-size:28px;\n        line-height:1.1;\n        font-weight:800;\n    }\n\n    .rbc-rh-subtitle {\n        margin-top:7px;\n        color:#8e8aa2;\n        font-size:13px;\n    }\n\n    \/* =====================================================\n       PAGE BACKGROUND\n    ===================================================== *\/\n\n    body.rbc-rh-page-bg::before {\n        content:\"\";\n        position:fixed;\n        inset:-28px;\n        z-index:-2;\n        pointer-events:none;\n        background:\n            linear-gradient(\n                rgba(7,5,15,.48),\n                rgba(7,5,15,.48)\n            ),\n            url(\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/riven_splash_centered_55.jpg\")\n            center center \/ cover no-repeat;\n        filter:blur(9px);\n        transform:scale(1.045);\n        opacity:.72;\n    }\n\n    body.rbc-rh-page-bg::after {\n        content:\"\";\n        position:fixed;\n        inset:0;\n        z-index:-1;\n        pointer-events:none;\n        background:rgba(6,5,12,.34);\n    }\n\n\n    .rbc-rh-filters {\n        display:flex;\n        align-items:flex-end;\n        justify-content:space-between;\n        gap:14px;\n        margin:0 0 18px;\n        padding:12px;\n        border:1px solid rgba(133,117,192,.14);\n        border-radius:11px;\n        background:rgba(15,13,27,.68);\n        backdrop-filter:blur(8px);\n        -webkit-backdrop-filter:blur(8px);\n    }\n\n    .rbc-rh-filter-search {\n        min-width:0;\n        flex:1 1 300px;\n    }\n\n    .rbc-rh-filter-label {\n        display:block;\n        margin:0 0 6px;\n        color:#77738b;\n        font-size:9px;\n        font-weight:900;\n        letter-spacing:.1em;\n    }\n\n    .rbc-rh-champion-input {\n        display:block;\n        width:100%;\n        min-height:38px;\n        padding:0 12px;\n        border:1px solid rgba(133,117,192,.2)!important;\n        border-radius:8px;\n        outline:none!important;\n        color:#f4f1ff!important;\n        background:rgba(8,7,16,.7)!important;\n        box-shadow:none!important;\n        font:inherit;\n        font-size:12px;\n    }\n\n    .rbc-rh-champion-input::placeholder {\n        color:#666177;\n    }\n\n    .rbc-rh-champion-input:focus {\n        border-color:rgba(157,140,255,.55)!important;\n    }\n\n    .rbc-rh-lane-filters {\n        display:flex;\n        align-items:center;\n        gap:6px;\n        flex:0 0 auto;\n    }\n\n    .rbc-rh-lane-filter {\n        width:38px;\n        height:38px;\n        padding:0!important;\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        border:1px solid rgba(133,117,192,.18)!important;\n        border-radius:8px;\n        color:#8b849e;\n        background:rgba(8,7,16,.58)!important;\n        box-shadow:none!important;\n        cursor:pointer;\n        transition:\n            border-color .15s ease,\n            background .15s ease,\n            opacity .15s ease,\n            transform .15s ease;\n    }\n\n    .rbc-rh-lane-filter:hover {\n        border-color:rgba(157,140,255,.4)!important;\n        transform:translateY(-1px);\n    }\n\n    .rbc-rh-lane-filter.active {\n        border-color:rgba(157,140,255,.6)!important;\n        background:rgba(105,84,180,.2)!important;\n        box-shadow:0 0 0 1px rgba(157,140,255,.08) inset!important;\n    }\n\n    .rbc-rh-lane-filter img {\n        width:21px;\n        height:21px;\n        display:block;\n        object-fit:contain;\n        opacity:.72;\n    }\n\n    .rbc-rh-lane-filter.active img {\n        opacity:1;\n    }\n\n    .rbc-rh-lane-all {\n        color:#aaa3c0;\n        font-size:9px;\n        font-weight:900;\n        letter-spacing:.05em;\n    }\n\n    .rbc-rh-no-filter-results {\n        padding:35px 20px;\n        text-align:center;\n        color:#77738b;\n        border:1px solid rgba(133,117,192,.12);\n        border-radius:12px;\n        background:rgba(20,19,34,.6);\n    }\n\n\n    .rbc-rh-refresh {\n        display:inline-flex;\n        align-items:center;\n        justify-content:center;\n        min-height:36px;\n        padding:0 14px;\n        border:1px solid rgba(157,140,255,.25);\n        border-radius:9px;\n        color:#c9c1ff;\n        background:rgba(105,84,180,.12);\n        text-decoration:none!important;\n        font-size:12px;\n        font-weight:700;\n    }\n\n    .rbc-rh-games {\n        display:flex;\n        flex-direction:column;\n        gap:9px;\n    }\n\n    .rbc-rh-loading,\n    .rbc-rh-empty {\n        padding:35px 20px;\n        text-align:center;\n        color:#77738b;\n        border:1px solid rgba(133,117,192,.12);\n        border-radius:12px;\n        background:rgba(20,19,34,.6);\n    }\n\n    .rbc-rh-card {\n        overflow:hidden;\n        border:1px solid rgba(133,117,192,.16);\n        border-radius:13px;\n        background:\n            linear-gradient(\n                100deg,\n                rgba(25,22,42,.98),\n                rgba(20,19,34,.98)\n            );\n    }\n\n    .rbc-rh-card-main {\n        min-height:82px;\n        padding:12px 15px;\n        display:grid;\n        grid-template-columns:\n            minmax(165px,1.3fr)\n            minmax(130px,.8fr)\n            minmax(100px,.7fr)\n            minmax(170px,1fr)\n            auto;\n        align-items:center;\n        gap:14px;\n        cursor:pointer;\n    }\n\n    .rbc-rh-player {\n        min-width:0;\n        display:flex;\n        align-items:center;\n        gap:10px;\n    }\n\n    .rbc-rh-twitch {\n        width:32px;\n        height:32px;\n        flex:0 0 32px;\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        border-radius:8px;\n        background:#9146ff;\n        color:#fff;\n    }\n\n    .rbc-rh-twitch svg {\n        width:19px;\n        height:19px;\n        fill:currentColor;\n    }\n\n    .rbc-rh-twitch-avatar {\n        width:30px;\n        height:30px;\n        flex:0 0 30px;\n        display:block;\n        border-radius:50%;\n        overflow:hidden;\n        border:1px solid rgba(255,255,255,.14);\n        background:#29263a;\n        box-shadow:0 2px 8px rgba(0,0,0,.18);\n    }\n\n    .rbc-rh-twitch-avatar img {\n        width:100%;\n        height:100%;\n        display:block;\n        object-fit:cover;\n    }\n\n    .rbc-rh-twitch-avatar-fallback {\n        width:30px;\n        height:30px;\n        flex:0 0 30px;\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        border-radius:50%;\n        background:#29263a;\n        border:1px solid rgba(255,255,255,.10);\n        color:#77738b;\n        font-size:11px;\n        font-weight:800;\n    }\n\n    .rbc-rh-player-text {\n        min-width:0;\n    }\n\n    .rbc-rh-player-name {\n        color:#fff;\n        font-size:13px;\n        font-weight:800;\n        white-space:nowrap;\n        overflow:hidden;\n        text-overflow:ellipsis;\n    }\n\n    .rbc-rh-player-meta {\n        margin-top:3px;\n        color:#77738b;\n        font-size:10px;\n    }\n\n    .rbc-rh-versus {\n        display:flex;\n        align-items:center;\n        gap:9px;\n    }\n\n    .rbc-rh-versus-wrap {\n        min-width:0;\n        display:flex;\n        flex-direction:column;\n        align-items:center;\n    }\n\n    .rbc-rh-champ {\n        width:37px;\n        height:37px;\n        border-radius:8px;\n        overflow:hidden;\n        background:#29263a;\n        border:1px solid rgba(255,255,255,.08);\n        flex:0 0 37px;\n    }\n\n    .rbc-rh-champ img {\n        display:block;\n        width:100%;\n        height:100%;\n        object-fit:cover;\n    }\n\n    .rbc-rh-vs {\n        color:#656174;\n        font-size:10px;\n        font-weight:800;\n    }\n\n    .rbc-rh-kda-main {\n        color:#f5f3ff;\n        font-size:14px;\n        font-weight:800;\n        white-space:nowrap;\n    }\n\n    .rbc-rh-cs {\n        margin-top:3px;\n        color:#77738b;\n        font-size:10px;\n    }\n\n    .rbc-rh-items {\n        display:flex;\n        align-items:center;\n        gap:4px;\n    }\n\n    .rbc-rh-item {\n        width:28px;\n        height:28px;\n        overflow:hidden;\n        border-radius:6px;\n        background:#29263a;\n        border:1px solid rgba(255,255,255,.06);\n    }\n\n    .rbc-rh-item img {\n        width:100%;\n        height:100%;\n        object-fit:cover;\n    }\n\n    .rbc-rh-result {\n        min-width:0;\n        display:flex;\n        align-items:center;\n        justify-content:flex-end;\n        gap:9px;\n        white-space:nowrap;\n    }\n\n    .rbc-rh-result-text {\n        min-width:0;\n        text-align:right;\n    }\n\n    .rbc-rh-win {\n        color:#7de0a8;\n        font-size:11px;\n        font-weight:900;\n    }\n\n    .rbc-rh-loss {\n        color:#ff7d94;\n        font-size:11px;\n        font-weight:900;\n    }\n\n    .rbc-rh-duration {\n        margin-top:3px;\n        color:#77738b;\n        font-size:10px;\n    }\n\n    .rbc-rh-game-date {\n        margin-top:4px;\n        color:#aaa3c0;\n        font-size:9px;\n        line-height:1.25;\n        white-space:nowrap;\n    }\n\n    .rbc-rh-match-patch {\n        margin-top:4px;\n        padding-left:0;\n        color:#77738b;\n        font-size:9px;\n        line-height:1.25;\n        white-space:nowrap;\n    }\n\n    .rbc-rh-lane {\n        width:25px;\n        height:25px;\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        border-radius:7px;\n        background:rgba(255,255,255,.035);\n        border:1px solid rgba(255,255,255,.05);\n    }\n\n    .rbc-rh-lane svg {\n        width:15px;\n        height:15px;\n        fill:none;\n        stroke:#aaa4bd;\n        stroke-width:1.7;\n        stroke-linecap:round;\n        stroke-linejoin:round;\n    }\n\n    .rbc-rh-arrow {\n        color:#575268;\n        font-size:17px;\n    }\n\n    .rbc-rh-detail {\n        display:none;\n        padding:0 15px 15px;\n    }\n\n    .rbc-rh-card.open .rbc-rh-detail {\n        display:block;\n    }\n\n    .rbc-rh-detail-inner {\n        display:grid;\n        grid-template-columns:\n            minmax(0,.85fr)\n            minmax(0,1.15fr);\n        gap:15px;\n        padding-top:14px;\n        border-top:1px solid rgba(255,255,255,.06);\n    }\n\n    .rbc-rh-detail-panel {\n        min-width:0;\n        padding:15px;\n        border:1px solid rgba(133,117,192,.12);\n        border-radius:11px;\n        background:rgba(8,7,16,.32);\n    }\n\n    .rbc-rh-detail-title {\n        margin-bottom:12px;\n        color:#aaa3c0;\n        font-size:10px;\n        font-weight:900;\n        letter-spacing:.1em;\n        text-transform:uppercase;\n    }\n\n    .rbc-rh-detail-info {\n        display:grid;\n        grid-template-columns:1fr 1fr;\n        gap:8px;\n    }\n\n    .rbc-rh-info-box {\n        padding:10px;\n        border-radius:8px;\n        background:rgba(255,255,255,.025);\n    }\n\n    .rbc-rh-info-label {\n        color:#666177;\n        font-size:9px;\n        text-transform:uppercase;\n        letter-spacing:.08em;\n    }\n\n    .rbc-rh-info-value {\n        margin-top:3px;\n        color:#eeeaf9;\n        font-size:12px;\n        font-weight:700;\n    }\n\n    .rbc-rh-build {\n        display:flex;\n        flex-wrap:wrap;\n        gap:5px;\n    }\n\n    .rbc-rh-build .rbc-rh-item {\n        width:35px;\n        height:35px;\n    }\n\n    .rbc-rh-vod-wrap {\n        width:100%;\n        aspect-ratio:16\/9;\n        overflow:hidden;\n        border-radius:9px;\n        background:#08070d;\n    }\n\n    .rbc-rh-vod-wrap iframe {\n        width:100%;\n        height:100%;\n        border:0;\n    }\n\n    .rbc-rh-vod-loading,\n    .rbc-rh-no-vod {\n        min-height:220px;\n        display:flex;\n        flex-direction:column;\n        align-items:center;\n        justify-content:center;\n        text-align:center;\n        padding:20px;\n        border-radius:9px;\n        background:#08070d;\n        color:#666177;\n    }\n\n    .rbc-rh-no-vod-title {\n        color:#9992ac;\n        font-size:12px;\n        font-weight:800;\n    }\n\n    .rbc-rh-no-vod-sub {\n        margin-top:5px;\n        color:#5f596e;\n        font-size:10px;\n    }\n\n    .rbc-rh-vod-title {\n        margin-top:9px;\n        color:#827b96;\n        font-size:10px;\n        line-height:1.4;\n    }\n\n    .rbc-rh-pagination {\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        gap:6px;\n        margin-top:18px;\n    }\n\n    .rbc-rh-page-numbers {\n        display:flex;\n        align-items:center;\n        justify-content:center;\n        gap:4px;\n        flex-wrap:wrap;\n    }\n\n    .rbc-rh-page,\n    .rbc-rh-page-arrow {\n        min-width:30px;\n        height:30px;\n        padding:0 8px;\n        border:1px solid rgba(255,255,255,.08);\n        border-radius:7px;\n        background:#171522;\n        color:#827b96;\n        font:inherit;\n        font-size:10px;\n        font-weight:800;\n        cursor:pointer;\n        transition:.15s ease;\n    }\n\n    .rbc-rh-page:hover,\n    .rbc-rh-page-arrow:hover:not(:disabled) {\n        color:#fff;\n        border-color:rgba(157,140,255,.35);\n        background:#201c30;\n    }\n\n    .rbc-rh-page.active {\n        color:#fff;\n        border-color:rgba(157,140,255,.45);\n        background:#2a2440;\n    }\n\n    .rbc-rh-page-arrow {\n        font-size:18px;\n        line-height:1;\n    }\n\n    .rbc-rh-page-arrow:disabled {\n        opacity:.3;\n        cursor:default;\n    }\n\n    .rbc-rh-attribution {\n        margin-top:13px;\n        color:#575268;\n        font-size:9px;\n        text-align:right;\n    }\n\n    .rbc-rh-attribution a {\n        color:#756c91;\n    }\n\n    @media(max-width:850px) {\n\n        .rbc-rh-card-main {\n            grid-template-columns:\n                minmax(145px,1fr)\n                minmax(115px,.8fr)\n                minmax(80px,.6fr)\n                auto;\n        }\n\n        .rbc-rh-items {\n            display:none;\n        }\n\n        .rbc-rh-detail-inner {\n            grid-template-columns:1fr;\n        }\n    }\n\n    @media(max-width:620px) {\n\n        .rbc-rh-header {\n            align-items:flex-start;\n        }\n\n        .rbc-rh-header h2 {\n            font-size:23px;\n        }\n\n        .rbc-rh-card-main {\n            grid-template-columns:\n                1fr auto auto;\n            gap:9px;\n        }\n\n        .rbc-rh-kda {\n            display:none;\n        }\n\n        .rbc-rh-player-meta {\n            display:none;\n        }\n\n        .rbc-rh-detail-info {\n            grid-template-columns:1fr;\n        }\n\n        .rbc-rh-filters {\n            align-items:stretch;\n            flex-direction:column;\n        }\n\n        .rbc-rh-filter-search {\n            flex:1 1 auto;\n        }\n\n        .rbc-rh-lane-filters {\n            width:100%;\n            justify-content:space-between;\n        }\n\n        .rbc-rh-lane-filter {\n            flex:1 1 0;\n            width:auto;\n        }\n    }\n\n    <\/style>\n\n\n    <script>\n    (function() {\n\n        const players =\n            [{\"name\":\"Viper\",\"riot_id\":\"cant type#1998\",\"region\":\"na\",\"twitch\":\"viper\"},{\"name\":\"Viper\",\"riot_id\":\"never type#1998\",\"region\":\"na\",\"twitch\":\"viper\"},{\"name\":\"1adrianaries1\",\"riot_id\":\"Adrian Riven#SF6\",\"region\":\"na\",\"twitch\":\"1adrianaries1\"},{\"name\":\"Built\",\"riot_id\":\"Built#2603\",\"region\":\"euw\",\"twitch\":\"builteuw\"},{\"name\":\"Tof\",\"riot_id\":\"\uc8fd\uc774\ub294#tof\",\"region\":\"euw\",\"twitch\":\"imtof_\"},{\"name\":\"PoEs\",\"riot_id\":\"TwTv PoEs tk#EUW11\",\"region\":\"euw\",\"twitch\":\"poes_tk\"}];\n\n        const ajaxUrl =\n            \"https:\\\/\\\/rbc-riven.com\\\/wp-admin\\\/admin-ajax.php\";\n\n        const nonce =\n            \"b05290dbe4\";\n\n        const container =\n            document.getElementById(\n                'rbc-rh-games'\n            );\n\n        if (!container) {\n            return;\n        }\n\n        let allGames = [];\n\n        let championFilter = '';\n        let laneFilter = '';\n        let currentPage = 1;\n\n        const gamesPerPage = 10;\n\n        const championInput =\n            document.getElementById(\n                'rbc-rh-champion-filter'\n            );\n\n        const laneButtons =\n            Array.from(\n                document.querySelectorAll(\n                    '.rbc-rh-lane-filter'\n                )\n            );\n\n\n        \/*\n         * Le fond est activ\u00e9 uniquement sur les pages qui\n         * contiennent le shortcode. Il ne touche pas aux donn\u00e9es\n         * ni au chargement des parties.\n         *\/\n        document.body.classList.add(\n            'rbc-rh-page-bg'\n        );\n\n\n        \/* =====================================================\n           HELPERS\n        ===================================================== *\/\n\n        function esc(value) {\n\n            if (\n                value === null ||\n                value === undefined\n            ) {\n                return '';\n            }\n\n            return String(value)\n                .replace(\/&\/g,'&amp;')\n                .replace(\/<\/g,'&lt;')\n                .replace(\/>\/g,'&gt;')\n                .replace(\/\"\/g,'&quot;')\n                .replace(\/'\/g,'&#039;');\n        }\n\n\n        function twitchIcon() {\n\n            return `\n                <svg viewBox=\"0 0 24 24\">\n                    <path d=\"M4 3h17v12l-4 4h-4l-3 3v-3H4V3Zm3 3v8h3v-5h2v5h3V6h-2v5h-2V6H7Z\"\/>\n                <\/svg>\n            `;\n        }\n\n\n        function champ(\n            image,\n            name\n        ) {\n\n            if (!image) {\n\n                return `\n                    <div\n                        class=\"rbc-rh-champ\"\n                        title=\"${esc(name)}\"\n                    ><\/div>\n                `;\n            }\n\n            return `\n                <div\n                    class=\"rbc-rh-champ\"\n                    title=\"${esc(name)}\"\n                >\n                    <img decoding=\"async\"\n                        src=\"${esc(image)}\"\n                        alt=\"${esc(name)}\"\n                        loading=\"lazy\"\n                    >\n                <\/div>\n            `;\n        }\n\n\n        function item(item) {\n\n            if (\n                !item ||\n                !item.image\n            ) {\n                return '';\n            }\n\n            return `\n                <div\n                    class=\"rbc-rh-item\"\n                    title=\"${esc(\n                        item.name || ''\n                    )}\"\n                >\n                    <img decoding=\"async\"\n                        src=\"${esc(\n                            item.image\n                        )}\"\n                        alt=\"${esc(\n                            item.name || ''\n                        )}\"\n                        loading=\"lazy\"\n                    >\n                <\/div>\n            `;\n        }\n\n\n        function items(list) {\n\n            if (\n                !Array.isArray(list)\n            ) {\n                return '';\n            }\n\n            return list\n                .slice(0,7)\n                .map(item)\n                .join('');\n        }\n\n\n        function duration(seconds) {\n\n            seconds =\n                Number(\n                    seconds || 0\n                );\n\n            if (!seconds) {\n                return '--:--';\n            }\n\n            const min =\n                Math.floor(\n                    seconds \/ 60\n                );\n\n            const sec =\n                seconds % 60;\n\n            return String(min)\n                .padStart(2,'0')\n                + ':'\n                + String(sec)\n                    .padStart(2,'0');\n        }\n\n\n        function gameDate(timestamp, createdAt) {\n\n            const value =\n                Number(timestamp || 0) ||\n                Date.parse(createdAt || '') \/ 1000 ||\n                0;\n\n            if (!value) {\n                return '';\n            }\n\n            const date =\n                new Date(\n                    value * 1000\n                );\n\n            return new Intl.DateTimeFormat(\n                'fr-FR',\n                {\n                    day: '2-digit',\n                    month: '2-digit',\n                    year: 'numeric'\n                }\n            ).format(date);\n        }\n\n\n       function laneIcon(position) {\n\n    const icons = {\n        TOP: 'top.png',\n        JUNGLE: 'jungle.png',\n        MID: 'midlane.png',\n        BOT: 'bot.png',\n        SUPPORT: 'support.png'\n    };\n\n    const key = String(position || '').trim().toUpperCase();\n    const file = icons[key];\n\n    if (!file) {\n        return '';\n    }\n\n    return `\n        <img decoding=\"async\"\n            src=\"http:\/\/rbc-riven.com\/wp-content\/uploads\/2026\/09\/${file}\"\n            alt=\"${esc(position)}\"\n            class=\"rbc-rh-role-icon\"\n        >\n    `;\n}\n\n        function resultHtml(\n            result\n        ) {\n\n            return (\n                String(result)\n                    .toUpperCase() === 'WIN'\n                    ? '<span class=\"rbc-rh-win\">VICTOIRE<\/span>'\n                    : '<span class=\"rbc-rh-loss\">D\u00c9FAITE<\/span>'\n            );\n        }\n\n\n        \/* =====================================================\n           VOD\n        ===================================================== *\/\n\n        function vodLoadingHtml() {\n\n            return `\n                <div class=\"rbc-rh-vod-loading\">\n                    Recherche de la VOD Twitch\u2026\n                <\/div>\n            `;\n        }\n\n\n        function noVodHtml() {\n\n            return `\n                <div class=\"rbc-rh-no-vod\">\n\n                    <div class=\"rbc-rh-no-vod-title\">\n                        Aucun VOD Twitch reli\u00e9 \u00e0 cette partie\n                    <\/div>\n\n                    <div class=\"rbc-rh-no-vod-sub\">\n                        Aucun stream correspondant n'a \u00e9t\u00e9 trouv\u00e9.\n                    <\/div>\n\n                <\/div>\n            `;\n        }\n\n\n        function createVodIframe(\n            vod\n        ) {\n\n            if (\n                !vod ||\n                !vod.id\n            ) {\n                return noVodHtml();\n            }\n\n            const time =\n                vod.time\n                ? '&time=' +\n                    encodeURIComponent(\n                        vod.time\n                    )\n                : '';\n\n            const src =\n                'https:\/\/player.twitch.tv\/?video=' +\n                encodeURIComponent(\n                    vod.id\n                ) +\n                '&parent=rbc-riven.com' +\n                '&autoplay=true' +\n                time;\n\n            return `\n                <div class=\"rbc-rh-vod-wrap\">\n\n                    <iframe\n                        src=\"${esc(src)}\"\n                        allow=\"autoplay; fullscreen\"\n                        allowfullscreen\n                        scrolling=\"no\"\n                        frameborder=\"0\"\n                    ><\/iframe>\n\n                <\/div>\n\n                <div class=\"rbc-rh-vod-title\">\n                    ${esc(\n                        (vod && vod.title)\n                            ? vod.title\n                            : 'VOD Twitch'\n                    )}\n                <\/div>\n            `;\n        }\n\n\n        function loadVod(\n            card,\n            game\n        ) {\n\n            const slot =\n                card.querySelector(\n                    '.rbc-rh-vod-slot'\n                );\n\n            if (!slot) {\n                return;\n            }\n\n            slot.innerHTML =\n                vodLoadingHtml();\n\n            const body =\n                new URLSearchParams();\n\n            body.append(\n                'action',\n                'rbc_rh_load_vod'\n            );\n\n            body.append(\n                'player',\n                String(\n                    game.player_index ??\n                    0\n                )\n            );\n\n            \/*\n             * On envoie le timestamp OP.GG tel quel.\n             * Le serveur d\u00e9cide ensuite s'il s'agit d\u00e9j\u00e0 du d\u00e9but\n             * de la game ou s'il doit recaler l'offset vers le d\u00e9but\n             * lorsque le timestamp fourni tombe anormalement pr\u00e8s\n             * de la fin de la partie.\n             *\/\n            const gameTimestamp =\n                Number(\n                    game.timestamp ||\n                    0\n                );\n\n            const gameLength =\n                Number(\n                    game.game_length ||\n                    0\n                );\n\n            body.append(\n                'timestamp',\n                String(\n                    gameTimestamp\n                )\n            );\n\n            body.append(\n                'game_length',\n                String(\n                    gameLength\n                )\n            );\n\n            body.append(\n                '_ajax_nonce',\n                nonce\n            );\n\n            fetch(\n                ajaxUrl,\n                {\n                    method:'POST',\n\n                    credentials:\n                        'same-origin',\n\n                    headers:{\n                        'Content-Type':\n                            'application\/x-www-form-urlencoded; charset=UTF-8'\n                    },\n\n                    body:\n                        body.toString()\n                }\n            )\n            .then(\n                function(response) {\n                    return response.json();\n                }\n            )\n            .then(\n                function(data) {\n\n                    if (\n                        !card.classList.contains(\n                            'open'\n                        )\n                    ) {\n\n                        slot.innerHTML =\n                            '';\n\n                        return;\n                    }\n\n                    const vod =\n                        data &&\n                        data.success &&\n                        data.data\n                            ? data.data.vod\n                            : null;\n\n                    slot.innerHTML =\n                        vod\n                        ? createVodIframe(\n                            vod\n                        )\n                        : noVodHtml();\n                }\n            )\n            .catch(\n                function() {\n\n                    if (\n                        card.classList.contains(\n                            'open'\n                        )\n                    ) {\n\n                        slot.innerHTML =\n                            noVodHtml();\n\n                    } else {\n\n                        slot.innerHTML =\n                            '';\n                    }\n                }\n            );\n        }\n\n\n        \/* =====================================================\n           CARD\n        ===================================================== *\/\n\n        function closeCard(\n            card\n        ) {\n\n            if (!card) {\n                return;\n            }\n\n            card.classList.remove(\n                'open'\n            );\n\n            const slot =\n                card.querySelector(\n                    '.rbc-rh-vod-slot'\n                );\n\n            if (slot) {\n                slot.innerHTML =\n                    '';\n            }\n        }\n\n\n        function closeAllCards(\n            except\n        ) {\n\n            container\n                .querySelectorAll(\n                    '.rbc-rh-card.open'\n                )\n                .forEach(\n                    function(card) {\n\n                        if (\n                            except &&\n                            card === except\n                        ) {\n                            return;\n                        }\n\n                        closeCard(\n                            card\n                        );\n                    }\n                );\n        }\n\n\n        \/* =====================================================\n           RENDER GAME\n        ===================================================== *\/\n\n        function renderGame(\n            game,\n            index\n        ) {\n\n            const player =\n                game.player || {};\n\n            const champion =\n                game.champion || {};\n\n            const opponent =\n                game.opponent || {};\n\n            const position =\n                String(\n                    game.position || ''\n                ).toUpperCase();\n\n            const kda =\n                `${esc(game.kills)}\/${esc(game.deaths)}\/${esc(game.assists)}`;\n\n            const date =\n                gameDate(\n                    game.timestamp,\n                    game.created_at\n                );\n\n            const patch =\n                String(\n                    game.patch || ''\n                ).trim();\n\n            return `\n                <article\n                    class=\"rbc-rh-card\"\n                    data-index=\"${index}\"\n                >\n\n                    <div\n                        class=\"rbc-rh-card-main\"\n                    >\n\n                        <div class=\"rbc-rh-player\">\n\n                            <div class=\"rbc-rh-twitch\">\n                                ${twitchIcon()}\n                            <\/div>\n\n                            <div class=\"rbc-rh-player-text\">\n\n                                <div class=\"rbc-rh-player-name\">\n                                    ${esc(\n                                        player.name ||\n                                        player.riot_id ||\n                                        ''\n                                    )}\n                                <\/div>\n\n                                <div class=\"rbc-rh-player-meta\">\n                                    ${esc(\n                                        player.region ||\n                                        ''\n                                    )}\n                                    \u00b7\n                                    ${esc(\n                                        player.twitch ||\n                                        ''\n                                    )}\n                                <\/div>\n\n                            <\/div>\n\n                            ${\n                                player.twitch_avatar\n                                    ? `\n                                        <a\n                                            class=\"rbc-rh-twitch-avatar\"\n                                            href=\"https:\/\/www.twitch.tv\/${encodeURIComponent(\n                                                player.twitch || ''\n                                            )}\"\n                                            target=\"_blank\"\n                                            rel=\"noopener noreferrer\"\n                                            title=\"Voir la cha\u00eene Twitch de ${esc(\n                                                player.twitch || ''\n                                            )}\"\n                                            aria-label=\"Voir la cha\u00eene Twitch de ${esc(\n                                                player.twitch || ''\n                                            )}\"\n                                        >\n                                            <img decoding=\"async\"\n                                                src=\"${esc(\n                                                    player.twitch_avatar\n                                                )}\"\n                                                alt=\"${esc(\n                                                    player.twitch || ''\n                                                )}\"\n                                                loading=\"lazy\"\n                                            >\n                                        <\/a>\n                                    `\n                                    : `\n                                        <span\n                                            class=\"rbc-rh-twitch-avatar-fallback\"\n                                            title=\"${esc(\n                                                player.twitch || ''\n                                            )}\"\n                                        >\n                                            ${esc(\n                                                (player.twitch || '?')\n                                                    .charAt(0)\n                                                    .toUpperCase()\n                                            )}\n                                        <\/span>\n                                    `\n                            }\n\n                        <\/div>\n\n\n                        <div class=\"rbc-rh-versus-wrap\">\n\n                            <div class=\"rbc-rh-versus\">\n\n                                ${champ(\n                                    champion.image,\n                                    champion.name\n                                )}\n\n                                <span class=\"rbc-rh-vs\">\n                                    VS\n                                <\/span>\n\n                                ${champ(\n                                    opponent.image,\n                                    opponent.name\n                                )}\n\n                            <\/div>\n\n                            ${\n                                patch\n                                    ? `\n                                        <div class=\"rbc-rh-match-patch\">\n                                            Patch ${esc(patch)}\n                                        <\/div>\n                                    `\n                                    : ''\n                            }\n\n                        <\/div>\n\n\n                        <div class=\"rbc-rh-kda\">\n\n                            <div class=\"rbc-rh-kda-main\">\n                                ${kda}\n                            <\/div>\n\n                            <div class=\"rbc-rh-cs\">\n                                ${esc(\n                                    game.cs || 0\n                                )}\n                                CS\n                            <\/div>\n\n                        <\/div>\n\n\n                        <div class=\"rbc-rh-items\">\n                            ${items(\n                                game.items\n                            )}\n                        <\/div>\n\n\n                        <div class=\"rbc-rh-result\">\n\n                            <div\n                                class=\"rbc-rh-lane\"\n                                title=\"${esc(\n                                    position\n                                )}\"\n                            >\n                                ${laneIcon(\n                                    position\n                                )}\n                            <\/div>\n\n                            <div class=\"rbc-rh-result-text\">\n\n                                ${resultHtml(\n                                    game.result\n                                )}\n\n                                <div class=\"rbc-rh-duration\">\n                                    ${duration(\n                                        game.game_length\n                                    )}\n                                <\/div>\n\n                                ${\n                                    date\n                                        ? `\n                                            <div class=\"rbc-rh-game-date\">\n                                                ${esc(date)}\n                                            <\/div>\n                                        `\n                                        : ''\n                                }\n\n\n                            <\/div>\n\n                            <div class=\"rbc-rh-arrow\">\n                                \u203a\n                            <\/div>\n\n                        <\/div>\n\n                    <\/div>\n\n\n                    <div class=\"rbc-rh-detail\">\n\n                        <div class=\"rbc-rh-detail-inner\">\n\n                            <div class=\"rbc-rh-detail-panel\">\n\n                                <div class=\"rbc-rh-detail-title\">\n                                    Partie\n                                <\/div>\n\n                                <div class=\"rbc-rh-detail-info\">\n\n                                    <div class=\"rbc-rh-info-box\">\n                                        <div class=\"rbc-rh-info-label\">\n                                            Joueur\n                                        <\/div>\n\n                                        <div class=\"rbc-rh-info-value\">\n                                            ${esc(\n                                                player.riot_id ||\n                                                player.name ||\n                                                ''\n                                            )}\n                                        <\/div>\n                                    <\/div>\n\n                                    <div class=\"rbc-rh-info-box\">\n                                        <div class=\"rbc-rh-info-label\">\n                                            R\u00e9gion\n                                        <\/div>\n\n                                        <div class=\"rbc-rh-info-value\">\n                                            ${esc(\n                                                player.region ||\n                                                ''\n                                            )}\n                                        <\/div>\n                                    <\/div>\n\n                                    <div class=\"rbc-rh-info-box\">\n                                        <div class=\"rbc-rh-info-label\">\n                                            Lane\n                                        <\/div>\n\n                                        <div class=\"rbc-rh-info-value\">\n\n                                            <div class=\"rbc-rh-lane\">\n                                                ${laneIcon(\n                                                    position\n                                                )}\n                                            <\/div>\n\n                                        <\/div>\n                                    <\/div>\n\n                                    <div class=\"rbc-rh-info-box\">\n                                        <div class=\"rbc-rh-info-label\">\n                                            Adversaire\n                                        <\/div>\n\n                                        <div class=\"rbc-rh-info-value\">\n\n                                            ${champ(\n                                                opponent.image,\n                                                opponent.name\n                                            )}\n\n                                            <span\n                                                style=\"\n                                                    margin-left:7px;\n                                                    vertical-align:top;\n                                                    line-height:37px;\n                                                \"\n                                            >\n                                                ${esc(\n                                                    opponent.name ||\n                                                    'Inconnu'\n                                                )}\n                                            <\/span>\n\n                                        <\/div>\n                                    <\/div>\n\n                                    <div class=\"rbc-rh-info-box\">\n                                        <div class=\"rbc-rh-info-label\">\n                                            KDA\n                                        <\/div>\n\n                                        <div class=\"rbc-rh-info-value\">\n                                            ${kda}\n                                        <\/div>\n                                    <\/div>\n\n                                    <div class=\"rbc-rh-info-box\">\n                                        <div class=\"rbc-rh-info-label\">\n                                            CS\n                                        <\/div>\n\n                                        <div class=\"rbc-rh-info-value\">\n                                            ${esc(\n                                                game.cs || 0\n                                            )}\n                                        <\/div>\n                                    <\/div>\n\n                                <\/div>\n\n\n                                <div\n                                    class=\"rbc-rh-detail-title\"\n                                    style=\"margin-top:18px;\"\n                                >\n                                    Build\n                                <\/div>\n\n                                <div class=\"rbc-rh-build\">\n                                    ${items(\n                                        game.items\n                                    )}\n                                <\/div>\n\n                            <\/div>\n\n\n                            <div class=\"rbc-rh-detail-panel\">\n\n                                <div class=\"rbc-rh-detail-title\">\n                                    Twitch VOD\n                                <\/div>\n\n                                <div class=\"rbc-rh-vod-slot\"><\/div>\n\n                            <\/div>\n\n                        <\/div>\n\n                    <\/div>\n\n                <\/article>\n            `;\n        }\n\n\n        \/* =====================================================\n           FILTERS\n        ===================================================== *\/\n\n        function getInitialChampionFilter() {\n\n            const raw =\n                window.location.hash\n                    ? window.location.hash.substring(1)\n                    : '';\n\n            if (!raw) {\n                return '';\n            }\n\n            try {\n                return decodeURIComponent(\n                    raw.replace(\/\\+\/g,' ')\n                ).trim();\n            } catch (error) {\n                return raw.trim();\n            }\n        }\n\n\n        function gameMatchesFilters(game) {\n\n            const opponent =\n                String(\n                    game &&\n                    game.opponent &&\n                    game.opponent.name\n                    ? game.opponent.name\n                    : ''\n                ).trim();\n\n            const position =\n                String(\n                    game &&\n                    game.position\n                    ? game.position\n                    : ''\n                ).toUpperCase().trim();\n\n            const championOk =\n                !championFilter ||\n                opponent\n                    .toLocaleLowerCase('fr')\n                    .includes(\n                        championFilter\n                            .toLocaleLowerCase('fr')\n                    );\n\n            const laneOk =\n                !laneFilter ||\n                position === laneFilter;\n\n            return championOk && laneOk;\n        }\n\n\n        function getFilteredGames() {\n\n            return allGames.filter(\n                gameMatchesFilters\n            );\n        }\n\n\n        function renderFilteredGames() {\n\n            const filtered =\n                getFilteredGames();\n\n            if (!filtered.length) {\n\n                currentPage = 1;\n\n                container.innerHTML = `\n                    <div class=\"rbc-rh-no-filter-results\">\n                        Aucune partie ne correspond aux filtres.\n                    <\/div>\n                `;\n\n                return;\n            }\n\n            const totalPages =\n                Math.ceil(\n                    filtered.length \/\n                    gamesPerPage\n                );\n\n            if (currentPage > totalPages) {\n                currentPage = totalPages;\n            }\n\n            const start =\n                (currentPage - 1) *\n                gamesPerPage;\n\n            const pageGames =\n                filtered.slice(\n                    start,\n                    start + gamesPerPage\n                );\n\n            container.innerHTML =\n                pageGames\n                    .map(\n                        function(game) {\n\n                            return renderGame(\n                                game,\n                                allGames.indexOf(game)\n                            );\n\n                        }\n                    )\n                    .join('') +\n                (totalPages > 1\n                    ? `\n                        <div class=\"rbc-rh-pagination\">\n                            <button\n                                type=\"button\"\n                                class=\"rbc-rh-page-arrow\"\n                                data-page=\"${currentPage - 1}\"\n                                ${currentPage === 1 ? 'disabled' : ''}\n                                aria-label=\"Page pr\u00e9c\u00e9dente\"\n                            >\n                                \u2039\n                            <\/button>\n\n                            <div class=\"rbc-rh-page-numbers\">\n                                ${Array.from(\n                                    { length: totalPages },\n                                    function(_, i) {\n                                        const page = i + 1;\n\n                                        return `\n                                            <button\n                                                type=\"button\"\n                                                class=\"rbc-rh-page ${page === currentPage ? 'active' : ''}\"\n                                                data-page=\"${page}\"\n                                            >\n                                                ${page}\n                                            <\/button>\n                                        `;\n                                    }\n                                ).join('')}\n                            <\/div>\n\n                            <button\n                                type=\"button\"\n                                class=\"rbc-rh-page-arrow\"\n                                data-page=\"${currentPage + 1}\"\n                                ${currentPage === totalPages ? 'disabled' : ''}\n                                aria-label=\"Page suivante\"\n                            >\n                                \u203a\n                            <\/button>\n                        <\/div>\n                    `\n                    : '');\n\n            container\n                .querySelectorAll(\n                    '.rbc-rh-card-main'\n                )\n                .forEach(\n                    function(main) {\n\n                        main.addEventListener(\n                            'click',\n                            function() {\n\n                                const card =\n                                    main.closest(\n                                        '.rbc-rh-card'\n                                    );\n\n                                if (!card) {\n                                    return;\n                                }\n\n                                const wasOpen =\n                                    card.classList.contains(\n                                        'open'\n                                    );\n\n                                closeAllCards(\n                                    card\n                                );\n\n                                if (wasOpen) {\n\n                                    closeCard(\n                                        card\n                                    );\n\n                                    return;\n                                }\n\n                                card.classList.add(\n                                    'open'\n                                );\n\n                                const game =\n                                    allGames[\n                                        Number(\n                                            card.dataset.index\n                                        )\n                                    ];\n\n                                if (game) {\n\n                                    loadVod(\n                                        card,\n                                        game\n                                    );\n                                }\n                            }\n                        );\n                    }\n                );\n\n            container\n                .querySelectorAll(\n                    '.rbc-rh-page, .rbc-rh-page-arrow'\n                )\n                .forEach(\n                    function(button) {\n\n                        button.addEventListener(\n                            'click',\n                            function() {\n\n                                const page =\n                                    Number(\n                                        button.dataset.page\n                                    );\n\n                                if (!page || page === currentPage) {\n                                    return;\n                                }\n\n                                currentPage = page;\n                                renderFilteredGames();\n\n                                const gamesTop =\n                                    container.getBoundingClientRect().top +\n                                    window.scrollY -\n                                    80;\n\n                                window.scrollTo({\n                                    top: gamesTop,\n                                    behavior: 'smooth'\n                                });\n                            }\n                        );\n                    }\n                );\n        }\n\n\n        function applyFilters() {\n\n            renderFilteredGames();\n\n        }\n\n\n        function initFilters() {\n\n            championFilter =\n                getInitialChampionFilter();\n\n            if (championInput) {\n\n                championInput.value =\n                    championFilter;\n\n                championInput.addEventListener(\n                    'input',\n                    function() {\n\n                        championFilter =\n                            championInput.value.trim();\n\n                        currentPage = 1;\n                        applyFilters();\n                    }\n                );\n            }\n\n            laneButtons.forEach(\n                function(button) {\n\n                    button.addEventListener(\n                        'click',\n                        function() {\n\n                            laneFilter =\n                                String(\n                                    button.dataset.lane ||\n                                    ''\n                                ).toUpperCase();\n\n                            currentPage = 1;\n\n                            laneButtons.forEach(\n                                function(other) {\n\n                                    other.classList.toggle(\n                                        'active',\n                                        other === button\n                                    );\n\n                                }\n                            );\n\n                            applyFilters();\n                        }\n                    );\n\n                }\n            );\n        }\n\n\n        \/* =====================================================\n           RENDER\n        ===================================================== *\/\n\n        function addGames(\n            games,\n            playerIndex\n        ) {\n\n            if (\n                !Array.isArray(games)\n            ) {\n                return;\n            }\n\n            games.forEach(\n                function(game) {\n\n                    game.player_index =\n                        playerIndex;\n\n                    const exists =\n                        allGames.some(\n                            function(existing) {\n\n                                return (\n                                    existing.id ===\n                                    game.id\n                                );\n                            }\n                        );\n\n                    if (!exists) {\n\n                        allGames.push(\n                            game\n                        );\n                    }\n                }\n            );\n        }\n\n\n        function render() {\n\n            \/*\n             * Toutes les games des 4 joueurs sont d'abord fusionn\u00e9es,\n             * puis tri\u00e9es ici. Elles ne sont donc pas regroup\u00e9es par streamer.\n             *\/\n            allGames.sort(\n                function(a,b) {\n\n                    const bt =\n                        Number(\n                            b.timestamp || 0\n                        ) ||\n                        Date.parse(\n                            b.created_at || ''\n                        ) ||\n                        0;\n\n                    const at =\n                        Number(\n                            a.timestamp || 0\n                        ) ||\n                        Date.parse(\n                            a.created_at || ''\n                        ) ||\n                        0;\n\n                    return bt - at;\n                }\n            );\n\n            if (\n                !allGames.length\n            ) {\n\n                container.innerHTML = `\n                    <div class=\"rbc-rh-empty\">\n                        Aucune partie Riven trouv\u00e9e.\n                    <\/div>\n                `;\n\n                return;\n            }\n\n            \/*\n             * Les filtres ne font que masquer\/afficher les games d\u00e9j\u00e0\n             * charg\u00e9es. Aucun appel r\u00e9seau suppl\u00e9mentaire n'est lanc\u00e9.\n             *\/\n            renderFilteredGames();\n        }\n\n\n        \/* =====================================================\n           LOAD PLAYER\n        ===================================================== *\/\n\n        function loadPlayer(\n            index\n        ) {\n\n            return new Promise(\n                function(resolve) {\n\n                    const body =\n                        new URLSearchParams();\n\n                    body.append(\n                        'action',\n                        'rbc_rh_load_player'\n                    );\n\n                    body.append(\n                        'player',\n                        String(index)\n                    );\n\n                    body.append(\n                        '_ajax_nonce',\n                        nonce\n                    );\n\n                    fetch(\n                        ajaxUrl,\n                        {\n                            method:'POST',\n\n                            credentials:\n                                'same-origin',\n\n                            headers:{\n                                'Content-Type':\n                                    'application\/x-www-form-urlencoded; charset=UTF-8'\n                            },\n\n                            body:\n                                body.toString()\n                        }\n                    )\n                    .then(\n                        function(response) {\n                            return response.json();\n                        }\n                    )\n                    .then(\n                        function(data) {\n\n                            if (\n                                data &&\n                                data.success &&\n                                data.data\n                            ) {\n\n                                addGames(\n                                    data.data.games ||\n                                    [],\n                                    index\n                                );\n\n                                render();\n                            }\n\n                            resolve();\n                        }\n                    )\n                    .catch(\n                        function() {\n                            resolve();\n                        }\n                    );\n                }\n            );\n        }\n\n\n        \/* =====================================================\n           LOAD ALL PLAYERS IN PARALLEL\n        ===================================================== *\/\n\n        function loadAllPlayers() {\n\n            const requests =\n                players.map(\n                    function(\n                        player,\n                        index\n                    ) {\n\n                        return loadPlayer(\n                            index\n                        );\n                    }\n                );\n\n            Promise.all(\n                requests\n            );\n        }\n\n\n        initFilters();\n        loadAllPlayers();\n\n    })();\n    <\/script>\n\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3349","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"La Bible des Mains Riven -\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"VODs de Matchups Riven - La Bible des Mains Riven\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-30T11:54:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-30T17:16:27+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"VODs de Matchups Riven - La Bible des Mains Riven\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/index.php\\\/matchup-vods\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rbc-riven.com\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/index.php\\\/matchup-vods\\\/#listItem\",\"name\":\"VODs de Matchups Riven\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/index.php\\\/matchup-vods\\\/#listItem\",\"position\":2,\"name\":\"VODs de Matchups Riven\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/#organization\",\"name\":\"La Bible des Mains Riven\",\"url\":\"https:\\\/\\\/rbc-riven.com\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/index.php\\\/matchup-vods\\\/#webpage\",\"url\":\"https:\\\/\\\/rbc-riven.com\\\/index.php\\\/matchup-vods\\\/\",\"name\":\"VODs de Matchups Riven - La Bible des Mains Riven\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/index.php\\\/matchup-vods\\\/#breadcrumblist\"},\"datePublished\":\"2026-09-30T11:54:28+00:00\",\"dateModified\":\"2026-09-30T17:16:27+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/#website\",\"url\":\"https:\\\/\\\/rbc-riven.com\\\/\",\"name\":\"La Bible des Mains Riven\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/rbc-riven.com\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"VODs de Matchups Riven - La Bible des Mains Riven","description":"","canonical_url":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/rbc-riven.com\/#listItem","position":1,"name":"Home","item":"https:\/\/rbc-riven.com\/","nextItem":{"@type":"ListItem","@id":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/#listItem","name":"VODs de Matchups Riven"}},{"@type":"ListItem","@id":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/#listItem","position":2,"name":"VODs de Matchups Riven","previousItem":{"@type":"ListItem","@id":"https:\/\/rbc-riven.com\/#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/rbc-riven.com\/#organization","name":"La Bible des Mains Riven","url":"https:\/\/rbc-riven.com\/"},{"@type":"WebPage","@id":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/#webpage","url":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/","name":"VODs de Matchups Riven - La Bible des Mains Riven","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/rbc-riven.com\/#website"},"breadcrumb":{"@id":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/#breadcrumblist"},"datePublished":"2026-09-30T11:54:28+00:00","dateModified":"2026-09-30T17:16:27+00:00"},{"@type":"WebSite","@id":"https:\/\/rbc-riven.com\/#website","url":"https:\/\/rbc-riven.com\/","name":"La Bible des Mains Riven","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/rbc-riven.com\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"La Bible des Mains Riven -","og:type":"article","og:title":"VODs de Matchups Riven - La Bible des Mains Riven","og:url":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/","article:published_time":"2026-09-30T11:54:28+00:00","article:modified_time":"2026-09-30T17:16:27+00:00","twitter:card":"summary_large_image","twitter:title":"VODs de Matchups Riven - La Bible des Mains Riven"},"aioseo_meta_data":{"post_id":"3349","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-09-30 11:54:51","updated":"2026-09-30 18:15:00"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/rbc-riven.com\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tVODs de Matchups Riven\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/rbc-riven.com\/"},{"label":"VODs de Matchups Riven","link":"https:\/\/rbc-riven.com\/index.php\/matchup-vods\/"}],"_links":{"self":[{"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/pages\/3349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/comments?post=3349"}],"version-history":[{"count":5,"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/pages\/3349\/revisions"}],"predecessor-version":[{"id":3361,"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/pages\/3349\/revisions\/3361"}],"wp:attachment":[{"href":"https:\/\/rbc-riven.com\/index.php\/wp-json\/wp\/v2\/media?parent=3349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}