diff options
13 files changed, 230 insertions, 32 deletions
diff --git a/Cargo.lock b/Cargo.lock index 0d4b3c287e7..63784e9763c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -269,7 +269,7 @@ dependencies = [ "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -328,7 +328,7 @@ name = "cgl" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -416,7 +416,7 @@ version = "0.0.1" dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1077,7 +1077,7 @@ dependencies = [ [[package]] name = "gleam" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1290,7 +1290,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cgl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "leaky-cow 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1554,7 +1554,7 @@ dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "gaol 0.0.1 (git+https://github.com/servo/gaol)", "gfx 0.0.1", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "layout_thread 0.0.1", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2036,7 +2036,7 @@ dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2478,7 +2478,7 @@ dependencies = [ "encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "half 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2696,7 +2696,7 @@ dependencies = [ "compositing 0.0.1", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "libservo 0.0.1", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2763,7 +2763,7 @@ dependencies = [ "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "glx 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "io-surface 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3525,7 +3525,7 @@ dependencies = [ "euclid 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3839,7 +3839,7 @@ dependencies = [ "checksum getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9047cfbd08a437050b363d35ef160452c5fe8ea5187ae0a624708c91581d685" "checksum gif 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8a80d6fe9e52f637df9afd4779449a7be17c39cc9c35b01589bb833f956ba596" "checksum gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a795170cbd85b5a7baa58d6d7525cae6a03e486859860c220f7ebbbdd379d0a" -"checksum gleam 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)" = "0afb2d0a8283b336c9569b1dead35415f550dcf1d4f3b970b507f7373d0be626" +"checksum gleam 0.4.29 (registry+https://github.com/rust-lang/crates.io-index)" = "b74def65dc2902b459fc7dd258b10695130408b79fd8f8beb59f475b1536ed81" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum glutin 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90de8e0391e57098acfbfe693b23065e9186255d370ebae12c933b7d77df8424" "checksum glx 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "63a6e7c2846e12626455f45ebaff9d92161436dd0fa703d9d198012e528ca7b9" diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index 604fb4e16aa..576f948e4bd 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -16,7 +16,7 @@ compositing = {path = "../compositing"} cssparser = "0.23.0" euclid = "0.17" fnv = "1.0" -gleam = "0.4" +gleam = "0.4.29" ipc-channel = "0.10" log = "0.3.5" num-traits = "0.1.32" diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 97fa759c74c..8b6ae674825 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -892,6 +892,9 @@ impl WebGLImpl { ctx.gl().delete_vertex_arrays(&[id.get()]), WebGLCommand::BindVertexArray(id) => ctx.gl().bind_vertex_array(id.map_or(0, WebGLVertexArrayId::get)), + WebGLCommand::AliasedPointSizeRange(sender) => { + sender.send(ctx.gl().alias_point_size_range()).unwrap() + } } // TODO: update test expectations in order to enable debug assertions diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index 208a728f293..269dc42e709 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -274,6 +274,7 @@ pub enum WebGLCommand { CreateVertexArray(WebGLSender<Option<WebGLVertexArrayId>>), DeleteVertexArray(WebGLVertexArrayId), BindVertexArray(Option<WebGLVertexArrayId>), + AliasedPointSizeRange(WebGLSender<(f32, f32)>), } macro_rules! define_resource_id_struct { @@ -546,7 +547,8 @@ impl fmt::Debug for WebGLCommand { GenerateMipmap(..) => "GenerateMipmap", CreateVertexArray(..) => "CreateVertexArray", DeleteVertexArray(..) => "DeleteVertexArray", - BindVertexArray(..) => "BindVertexArray" + BindVertexArray(..) => "BindVertexArray", + AliasedPointSizeRange(..) => "AliasedPointSizeRange", }; write!(f, "CanvasWebGLMsg::{}(..)", name) diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index 8896f70d8b0..083e41d5ab3 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -13,7 +13,7 @@ path = "lib.rs" [dependencies] euclid = "0.17" gfx_traits = {path = "../gfx_traits"} -gleam = "0.4" +gleam = "0.4.29" image = "0.18" ipc-channel = "0.10" libc = "0.2" diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index c9edde464ee..173887dbed6 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -45,7 +45,7 @@ domobject_derive = {path = "../domobject_derive"} encoding_rs = "0.7" euclid = "0.17" fnv = "1.0" -gleam = "0.4" +gleam = "0.4.29" half = "1.0" html5ever = "0.22" hyper = "0.10" diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 24c0c3df069..97b65e00019 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1328,6 +1328,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { [x, y, width, height].to_jsval(cx, rval.handle_mut()); return rval.get(); } + constants::ALIASED_POINT_SIZE_RANGE => { + let (sender, receiver) = webgl_channel().unwrap(); + self.send_command(WebGLCommand::AliasedPointSizeRange(sender)); + let (width, height) = receiver.recv().unwrap(); + rooted!(in(cx) let mut rval = UndefinedValue()); + [width, height].to_jsval(cx, rval.handle_mut()); + return rval.get(); + } _ => { if !self.extension_manager.is_get_parameter_name_enabled(parameter) { self.webgl_error(WebGLError::InvalidEnum); diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 65c32af94e8..ac3c9b84fae 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -40,7 +40,7 @@ devtools_traits = {path = "../devtools_traits"} env_logger = "0.4" euclid = "0.17" gfx = {path = "../gfx"} -gleam = "0.4" +gleam = "0.4.29" ipc-channel = "0.10" layout_thread = {path = "../layout_thread"} log = "0.3" diff --git a/ports/servo/Cargo.toml b/ports/servo/Cargo.toml index 4f42def7c53..b2e28109d34 100644 --- a/ports/servo/Cargo.toml +++ b/ports/servo/Cargo.toml @@ -38,7 +38,7 @@ backtrace = "0.3" bitflags = "1.0" compositing = {path = "../../components/compositing"} euclid = "0.17" -gleam = "0.4" +gleam = "0.4.29" glutin = "0.13" libservo = {path = "../../components/servo"} log = "0.3.5" diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/variables/gl-pointcoord.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/variables/gl-pointcoord.html.ini index 29b31e80a49..3072d149182 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/variables/gl-pointcoord.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/variables/gl-pointcoord.html.ini @@ -1,6 +1,193 @@ [gl-pointcoord.html] - type: testharness - expected: ERROR - [WebGL test #3: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + [WebGL test #7: at (32, 32) expected: 1,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #8: at (48, 32) expected: 65,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #9: at (64, 32) expected: 129,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #10: at (80, 32) expected: 193,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #11: at (32, 48) expected: 1,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #12: at (48, 48) expected: 65,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #13: at (64, 48) expected: 129,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #14: at (80, 48) expected: 193,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #15: at (32, 64) expected: 1,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #16: at (48, 64) expected: 65,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #17: at (64, 64) expected: 129,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #18: at (80, 64) expected: 193,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #19: at (32, 80) expected: 1,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #20: at (48, 80) expected: 65,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #21: at (64, 80) expected: 129,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #22: at (80, 80) expected: 193,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #23: at (160, 32) expected: 1,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #24: at (176, 32) expected: 65,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #25: at (192, 32) expected: 129,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #26: at (208, 32) expected: 193,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #27: at (160, 48) expected: 1,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #28: at (176, 48) expected: 65,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #29: at (192, 48) expected: 129,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #30: at (208, 48) expected: 193,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #31: at (160, 64) expected: 1,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #32: at (176, 64) expected: 65,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #33: at (192, 64) expected: 129,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #34: at (208, 64) expected: 193,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #35: at (160, 80) expected: 1,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #36: at (176, 80) expected: 65,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #37: at (192, 80) expected: 129,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #38: at (208, 80) expected: 193,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #39: at (32, 160) expected: 1,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #40: at (48, 160) expected: 65,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #41: at (64, 160) expected: 129,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #42: at (80, 160) expected: 193,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #43: at (32, 176) expected: 1,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #44: at (48, 176) expected: 65,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #45: at (64, 176) expected: 129,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #46: at (80, 176) expected: 193,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #47: at (32, 192) expected: 1,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #48: at (48, 192) expected: 65,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #49: at (64, 192) expected: 129,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #50: at (80, 192) expected: 193,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #51: at (32, 208) expected: 1,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #52: at (48, 208) expected: 65,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #53: at (64, 208) expected: 129,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #54: at (80, 208) expected: 193,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #55: at (160, 160) expected: 1,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #56: at (176, 160) expected: 65,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #57: at (192, 160) expected: 129,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #58: at (208, 160) expected: 193,253,0 was 0,0,0] + expected: FAIL + + [WebGL test #59: at (160, 176) expected: 1,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #60: at (176, 176) expected: 65,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #61: at (192, 176) expected: 129,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #62: at (208, 176) expected: 193,189,0 was 0,0,0] + expected: FAIL + + [WebGL test #63: at (160, 192) expected: 1,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #64: at (176, 192) expected: 65,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #65: at (192, 192) expected: 129,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #66: at (208, 192) expected: 193,125,0 was 0,0,0] + expected: FAIL + + [WebGL test #67: at (160, 208) expected: 1,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #68: at (176, 208) expected: 65,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #69: at (192, 208) expected: 129,61,0 was 0,0,0] + expected: FAIL + + [WebGL test #70: at (208, 208) expected: 193,61,0 was 0,0,0] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-size.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-size.html.ini index 8fd69c14a58..216fd7dd0dc 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-size.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-size.html.ini @@ -1,6 +1,7 @@ [point-size.html] - type: testharness - expected: ERROR - [WebGL test #8: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + [WebGL test #9: at (0, 0) expected: 255,0,0 was 0,0,0] + expected: FAIL + + [WebGL test #18: at (0, 0) expected: 255,0,0 was 0,0,0] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini index 637b0ecffe1..1bc97e5fde8 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini @@ -1,9 +1,4 @@ [point-with-gl-pointcoord-in-fragment-shader.html] - type: testharness - expected: ERROR - [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] - expected: FAIL - - [WebGL Point with gl_PointCoord in Fragment Shader Test] + [WebGL test #0: at (32, 32) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html.ini index 941f2bc39db..54391ae5024 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html.ini @@ -1,5 +1,7 @@ [clipping-wide-points.html] - expected: ERROR - [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + [WebGL test #3: should be 0,255,0\nat (0, 0) expected: 0,255,0 was 255,0,0] + expected: FAIL + + [WebGL test #7: should be 0,255,0\nat (0, 0) expected: 0,255,0 was 255,0,0] expected: FAIL |