<commit_before>WebGLFeatureLevels = (function() {
    'use strict';

    function concatObj(a, b) {
        const ret = {};
        for (let k in a) {
            ret[k] = a[k];
        }
        for (let k in b) {
            ret[k] = b[k];
        }
        return ret;
    }

    const kLevels = {};
    kLevels[100] = {
        exts: [],
        limits: {},
    };
    kLevels[101] = {
        exts: [
            'ANGLE_instanced_arrays',
            'EXT_texture_filter_anisotropic',
            'OES_element_index_uint',
            'OES_standard_derivatives',
            'WEBGL_debug_renderer_info',
        ],
        limits: {
            MAX_CUBE_MAP_TEXTURE_SIZE: 4096,
            MAX_RENDERBUFFER_SIZE: 4096,
            MAX_TEXTURE_SIZE: 4096,
            MAX_VIEWPORT_DIMS: [4096, 4096],

            MAX_VERTEX_TEXTURE_IMAGE_UNITS: 4,
            MAX_TEXTURE_IMAGE_UNITS: 8,
            MAX_COMBINED_TEXTURE_IMAGE_UNITS: 8,

            MAX_VERTEX_ATTRIBS: 16,
            MAX_VARYING_VECTORS: 8,
            MAX_VERTEX_UNIFORM_VECTORS: 128,
            MAX_FRAGMENT_UNIFORM_VECTORS: 64,

            ALIASED_POINT_SIZE_RANGE: [1,100],
        },
    };
    kLevels[102] = {
        exts: kLevels[101].exts.concat([
            'EXT_frag_depth',
            'OES_texture_float',
            'OES_texture_float_linear',
            'OES_texture_half_float',
            'OES_texture_half_float_linear',
            'WEBGL_depth_texture',
        ]),
        limits: concatObj(kLevels[101].limits, {
            MAX_VERTEX_TEXTURE_IMAGE_UNITS: 8,
            ALIASED_POINT_SIZE_RANGE: [1,255],
        }),
    };
    kLevels[103] = {
        exts: kLevels[102].exts.concat([
            'EXT_blend_minmax', // no Edge
            'OES_vertex_array_object', // no Edge
            'WEBGL_draw_buffers', // no Edge
        ]),
        limits: concatObj(kLevels[102].limits, {
        }),
    };
    kLevels[200] = {
        exts: [],
        limits: {},
    };
    kLevels[201] = {<commit_msg>Modify feature levels 102 and 103.<commit_after>WebGLFeatureLevels = (function() {
    'use strict';

    function concatObj(a, b) {
        const ret = {};
        for (let k in a) {
            ret[k] = a[k];
        }
        for (let k in b) {
            ret[k] = b[k];
        }
        return ret;
    }

    const kLevels = {};
    kLevels[100] = {
        exts: [],
        limits: {},
    };
    kLevels[101] = {
        exts: [
            'ANGLE_instanced_arrays',
            'EXT_texture_filter_anisotropic',
            'OES_element_index_uint',
            'OES_standard_derivatives',
            'WEBGL_debug_renderer_info',
        ],
        limits: {
            MAX_CUBE_MAP_TEXTURE_SIZE: 4096,
            MAX_RENDERBUFFER_SIZE: 4096,
            MAX_TEXTURE_SIZE: 4096,
            MAX_VIEWPORT_DIMS: [4096, 4096],

            MAX_VERTEX_TEXTURE_IMAGE_UNITS: 4,
            MAX_TEXTURE_IMAGE_UNITS: 8,
            MAX_COMBINED_TEXTURE_IMAGE_UNITS: 8,

            MAX_VERTEX_ATTRIBS: 16,
            MAX_VARYING_VECTORS: 8,
            MAX_VERTEX_UNIFORM_VECTORS: 128,
            MAX_FRAGMENT_UNIFORM_VECTORS: 64,

            ALIASED_POINT_SIZE_RANGE: [1,100],
        },
    };
    kLevels[102] = {
        exts: kLevels[101].exts.concat([
            'EXT_frag_depth',
            'OES_texture_float',
            'OES_texture_float_linear',
            'OES_texture_half_float',
            'OES_texture_half_float_linear',
            //'OES_vertex_array_object', // no Edge
            'WEBGL_depth_texture',
        ]),
        limits: concatObj(kLevels[101].limits, {
            MAX_VERTEX_TEXTURE_IMAGE_UNITS: 8,
            ALIASED_POINT_SIZE_RANGE: [1,255],
        }),
    };
    kLevels[103] = {
        exts: kLevels[102].exts.concat([
            'EXT_blend_minmax', // no Edge
            'EXT_shader_texture_lod',
            'EXT_sRGB',
            'WEBGL_draw_buffers', // no Edge
        ]),
        limits: concatObj(kLevels[102].limits, {
            MAX_CUBE_MAP_TEXTURE_SIZE: 8192,
            MAX_RENDERBUFFER_SIZE: 8192,
            MAX_TEXTURE_SIZE: 8192,
            MAX_VIEWPORT_DIMS: [8192, 8192],

            MAX_VERTEX_TEXTURE_IMAGE_UNITS: 16,
            MAX_TEXTURE_IMAGE_UNITS: 16,
            MAX_COMBINED_TEXTURE_IMAGE_UNITS: 16,

            MAX_VERTEX_UNIFORM_VECTORS: 251,
            MAX_VARYING_VECTORS: 9,
            MAX_FRAGMENT_UNIFORM_VECTORS: 221,
        }),
    };
    kLevels[200] = {
        exts: [],
        limits: {},
    };
    kLevels[201] = {
{'fraction_non_alphanumeric': 0.10760749724366042, 'fraction_numerical': 0.039470782800441015, 'mean_word_length': 1.6840236686390533, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4913314', 'n_tokens_mistral': 1757, 'n_tokens_neox': 1565, 'n_words': 220}