processing 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/{release.yml → release-gem.yml} +21 -21
- data/.github/workflows/tag.yml +35 -0
- data/.github/workflows/test.yml +8 -9
- data/.github/workflows/utils.rb +55 -0
- data/ChangeLog.md +40 -28
- data/LICENSE +1 -1
- data/Rakefile +9 -34
- data/RubyProcessing.podspec +1 -1
- data/VERSION +1 -1
- data/examples/breakout.rb +2 -1
- data/examples/camera.rb +2 -1
- data/examples/clock.rb +3 -1
- data/examples/delay_camera.rb +2 -1
- data/examples/hello.rb +2 -1
- data/examples/image.rb +2 -1
- data/examples/shapes.rb +2 -1
- data/lib/processing/all.rb +20 -0
- data/lib/processing/capture.rb +119 -0
- data/lib/processing/context.rb +471 -0
- data/lib/processing/{module.rb → extension.rb} +3 -3
- data/lib/processing/font.rb +62 -0
- data/lib/processing/graphics.rb +40 -0
- data/lib/processing/graphics_context.rb +1676 -0
- data/lib/processing/image.rb +128 -0
- data/lib/processing/shader.rb +157 -0
- data/lib/processing/touch.rb +28 -0
- data/lib/processing/vector.rb +559 -0
- data/lib/processing.rb +30 -11
- data/lib/rubysketch-processing.rb +2 -1
- data/lib/rubysketch.rb +1 -1
- data/processing.gemspec +12 -6
- data/src/RubyProcessing.mm +1 -1
- data/test/helper.rb +8 -2
- data/test/{processing/test_graphics.rb → test_graphics.rb} +3 -3
- data/test/{processing/test_shader.rb → test_shader.rb} +3 -3
- data/test/{processing/test_utility.rb → test_utility.rb} +3 -3
- data/test/{processing/test_vector.rb → test_vector.rb} +8 -4
- metadata +112 -20
- data/lib/processing/include.rb +0 -25
- data/lib/processing/processing.rb +0 -3211
- data/test/processing/helper.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c2e51ddc5b4af3e0703b5c7df0dffb20a61bf2069c0796cea4b9c781b6a5e2a
|
4
|
+
data.tar.gz: 6cec5d1765224bcd50b960370969eeae686965a057936a958581293447d0f0c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d3f30687d9eaf5f009d8ee8acec6008bb400a90d5424054e0261ddba603e549a15521466c650b0ae8614dad34796a49145a88996d06975021a4345da295cdfe
|
7
|
+
data.tar.gz: a2f643357b3f4950bda9a58e6f40d35919c27cf2097ac1570e99ffe4498771d3a90fa51ace2ede6910b64c90b749d2b7b67112a9fb19eed57cceda8908690784
|
@@ -1,4 +1,4 @@
|
|
1
|
-
name: Release
|
1
|
+
name: Release Gem
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
@@ -9,46 +9,46 @@ jobs:
|
|
9
9
|
runs-on: macos-latest
|
10
10
|
|
11
11
|
steps:
|
12
|
+
- name: ruby 3.2
|
13
|
+
uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 3.2
|
16
|
+
|
12
17
|
- name: checkout
|
13
18
|
uses: actions/checkout@v2
|
14
19
|
|
15
|
-
- name:
|
16
|
-
|
17
|
-
with:
|
18
|
-
ruby-version: 3.0.x
|
20
|
+
- name: setup dependencies
|
21
|
+
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
|
19
22
|
|
20
23
|
- name: install gems
|
21
|
-
run:
|
22
|
-
gem install bundler
|
23
|
-
bundle install --jobs 4 --retry 3
|
24
|
+
run: gem install yard
|
24
25
|
|
25
|
-
- name:
|
26
|
-
|
27
|
-
run: |
|
28
|
-
echo ::set-output name=value::$(ruby -e 'print "${{ github.ref }}"[/\/v([\w\.\-]+)/, 1]')
|
26
|
+
- name: test
|
27
|
+
run: rake test
|
29
28
|
|
30
29
|
- name: create gem
|
31
|
-
|
30
|
+
id: gem
|
31
|
+
run: |
|
32
|
+
rake gem
|
33
|
+
echo path=$(ruby -e 'print Dir.glob("*.gem").first') >> $GITHUB_OUTPUT
|
32
34
|
|
33
|
-
- name: create release
|
34
|
-
id:
|
35
|
+
- name: create github release
|
36
|
+
id: release
|
35
37
|
uses: actions/create-release@v1
|
36
38
|
env:
|
37
39
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
38
40
|
with:
|
39
41
|
tag_name: ${{ github.ref }}
|
40
42
|
release_name: ${{ github.ref }}
|
41
|
-
draft: false
|
42
|
-
prerelease: false
|
43
43
|
|
44
|
-
- name: upload to
|
44
|
+
- name: upload to github release
|
45
45
|
uses: actions/upload-release-asset@v1
|
46
46
|
env:
|
47
47
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
48
48
|
with:
|
49
|
-
upload_url: ${{ steps.
|
50
|
-
asset_path:
|
51
|
-
asset_name:
|
49
|
+
upload_url: ${{ steps.release.outputs.upload_url }}
|
50
|
+
asset_path: ./${{ steps.gem.outputs.path }}
|
51
|
+
asset_name: ${{ steps.gem.outputs.path }}
|
52
52
|
asset_content_type: application/zip
|
53
53
|
|
54
54
|
- name: upload to rubygems
|
@@ -0,0 +1,35 @@
|
|
1
|
+
name: Tag
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [master]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
tag:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
|
11
|
+
steps:
|
12
|
+
- name: ruby 3.2
|
13
|
+
uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 3.2
|
16
|
+
|
17
|
+
- name: checkout
|
18
|
+
uses: actions/checkout@v2
|
19
|
+
with:
|
20
|
+
fetch-depth: 0
|
21
|
+
token: ${{ secrets.PAT }}
|
22
|
+
|
23
|
+
- name: setup dependencies
|
24
|
+
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies only: :xot'"
|
25
|
+
|
26
|
+
- name: setup user name and email
|
27
|
+
run: |
|
28
|
+
git config --global user.email "xordog@gmail.com"
|
29
|
+
git config --global user.name "xord"
|
30
|
+
|
31
|
+
- name: tag versions
|
32
|
+
run: "ruby -I.github/workflows -rutils -e 'tag_versions'"
|
33
|
+
|
34
|
+
- name: push tags
|
35
|
+
run: git push origin --tags
|
data/.github/workflows/test.yml
CHANGED
@@ -11,17 +11,16 @@ jobs:
|
|
11
11
|
runs-on: macos-latest
|
12
12
|
|
13
13
|
steps:
|
14
|
-
-
|
15
|
-
|
16
|
-
- name: ruby 3.0
|
17
|
-
uses: actions/setup-ruby@v1
|
14
|
+
- name: ruby 3.2
|
15
|
+
uses: ruby/setup-ruby@v1
|
18
16
|
with:
|
19
|
-
ruby-version: 3.
|
17
|
+
ruby-version: 3.2
|
18
|
+
|
19
|
+
- name: checkout
|
20
|
+
uses: actions/checkout@v2
|
20
21
|
|
21
|
-
- name:
|
22
|
-
run:
|
23
|
-
gem install bundler
|
24
|
-
bundle install --jobs 4 --retry 3
|
22
|
+
- name: setup dependencies
|
23
|
+
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
|
25
24
|
|
26
25
|
- name: test
|
27
26
|
run: rake test
|
@@ -0,0 +1,55 @@
|
|
1
|
+
RENAMES = {reflex: 'reflexion'}
|
2
|
+
|
3
|
+
def sh(cmd)
|
4
|
+
puts cmd
|
5
|
+
system cmd
|
6
|
+
end
|
7
|
+
|
8
|
+
def setup_dependencies(build: true, only: nil)
|
9
|
+
gemspec_path = `git ls-files`.lines(chomp: true).find {|l| l =~ /\.gemspec$/}
|
10
|
+
return unless gemspec_path
|
11
|
+
|
12
|
+
gemspec = File.read gemspec_path
|
13
|
+
name = File.basename gemspec_path, '.gemspec'
|
14
|
+
|
15
|
+
exts = File.readlines('Rakefile')
|
16
|
+
.map {|l| l[%r|^\s*require\W+(\w+)/extension\W+$|, 1]}
|
17
|
+
.compact
|
18
|
+
.reject {|ext| ext == name}
|
19
|
+
exts = exts & [only].flatten.map(&:to_s) if only
|
20
|
+
|
21
|
+
exts.each do |ext|
|
22
|
+
gem = RENAMES[ext.to_sym].then {|s| s || ext}
|
23
|
+
clone = "git clone --depth 1 https://github.com/xord/#{ext}.git ../#{ext}"
|
24
|
+
ver = gemspec[/add_runtime_dependency.*['"]#{gem}['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/, 1]
|
25
|
+
|
26
|
+
# 'rake subtree:push' pushes all subrepos, so cloning by new tag
|
27
|
+
# often fails before tagging each new tag
|
28
|
+
sh %( #{clone} --branch v#{ver} || #{clone} )
|
29
|
+
sh %( cd ../#{ext} && rake ext )
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def tag_versions()
|
34
|
+
tags = `git tag`.lines chomp: true
|
35
|
+
vers = `git log --oneline ./VERSION`
|
36
|
+
.lines(chomp: true)
|
37
|
+
.map {|line| line.split.first[/^\w+$/]}
|
38
|
+
.map {|hash| [`git cat-file -p #{hash}:./VERSION 2>/dev/null`[/[\d\.]+/], hash]}
|
39
|
+
.select {|ver, hash| ver && hash}
|
40
|
+
.reverse
|
41
|
+
.to_h
|
42
|
+
|
43
|
+
changes = File.read('ChangeLog.md')
|
44
|
+
.split(/^\s*##\s*\[\s*v([\d\.]+)\s*\].*$/)
|
45
|
+
.slice(1..-1)
|
46
|
+
.each_slice(2)
|
47
|
+
.to_h
|
48
|
+
.transform_values(&:strip!)
|
49
|
+
|
50
|
+
vers.to_a.reverse.each do |ver, hash|
|
51
|
+
tag = "v#{ver}"
|
52
|
+
break if tags.include?(tag)
|
53
|
+
sh %( git tag -a -m \"#{changes[ver]&.gsub '"', '\\"'}\" #{tag} #{hash} )
|
54
|
+
end
|
55
|
+
end
|
data/ChangeLog.md
CHANGED
@@ -1,14 +1,26 @@
|
|
1
|
-
#
|
1
|
+
# processing ChangeLog
|
2
2
|
|
3
3
|
|
4
|
-
## [
|
4
|
+
## [v0.5.1] - 2023-03-01
|
5
|
+
|
6
|
+
- requiring 'rubysketch-processing' is deprecated
|
7
|
+
|
8
|
+
|
9
|
+
## [v0.5.0] - 2023-02-09
|
10
|
+
|
11
|
+
- requiring 'processing/include' is deprecated
|
12
|
+
- require 'processing' and 'using Processing' is now required
|
13
|
+
- do not show the window if a draw block is not given
|
14
|
+
|
15
|
+
|
16
|
+
## [v0.4.0] - 2022-12-29
|
5
17
|
|
6
18
|
- renamed from rubysketch.gem to processing.gem
|
7
19
|
- renamed from RubySketch Pod to RubyProcessing Pod
|
8
20
|
- delete glsl mode
|
9
21
|
|
10
22
|
|
11
|
-
## [
|
23
|
+
## [v0.3.22] - 2022-11-14
|
12
24
|
|
13
25
|
RubySketch::Processing
|
14
26
|
- add Shader class
|
@@ -22,7 +34,7 @@ RubySketch::GLSL
|
|
22
34
|
- displays with pixel density 1.0
|
23
35
|
|
24
36
|
|
25
|
-
## [
|
37
|
+
## [v0.3.21] - 2022-09-05
|
26
38
|
|
27
39
|
- add rubysketch-glsl.rb
|
28
40
|
- add blend(), createImage(), setTitle(), tint() and noTint()
|
@@ -32,7 +44,7 @@ RubySketch::GLSL
|
|
32
44
|
- change initial values for strokeCap and strokeJoin to ROUND and MITER
|
33
45
|
|
34
46
|
|
35
|
-
## [
|
47
|
+
## [v0.3.20] - 2022-07-24
|
36
48
|
|
37
49
|
- add mouseClicked()
|
38
50
|
- add blendMode()
|
@@ -41,73 +53,73 @@ RubySketch::GLSL
|
|
41
53
|
- fix that resizing canvas consumes too much memory
|
42
54
|
|
43
55
|
|
44
|
-
## [
|
56
|
+
## [v0.3.19] - 2021-12-5
|
45
57
|
|
46
58
|
- fix runtime error
|
47
59
|
|
48
60
|
|
49
|
-
## [
|
61
|
+
## [v0.3.18] - 2021-12-5
|
50
62
|
|
51
63
|
- add 'mouseButton'
|
52
64
|
- pointer cancel event calls pointer_up block
|
53
65
|
|
54
66
|
|
55
|
-
## [
|
67
|
+
## [v0.3.17] - 2021-12-5
|
56
68
|
|
57
69
|
- add Touch#id
|
58
70
|
|
59
71
|
|
60
|
-
## [
|
72
|
+
## [v0.3.16] - 2021-2-14
|
61
73
|
|
62
74
|
- add key, keyCode and keyPressed system values
|
63
75
|
- add keyPressed(), keyReleased() and keyTyped() functions
|
64
76
|
- add motionGravity value and motion() function
|
65
77
|
|
66
78
|
|
67
|
-
## [
|
79
|
+
## [v0.3.15] - 2020-12-12
|
68
80
|
|
69
81
|
- delete temporary directory on launch
|
70
82
|
|
71
83
|
|
72
|
-
## [
|
84
|
+
## [v0.3.14] - 2020-12-12
|
73
85
|
|
74
86
|
- fix loadImage() fails when Encoding.default_internal is not nil
|
75
87
|
|
76
88
|
|
77
|
-
## [
|
89
|
+
## [v0.3.13] - 2020-12-12
|
78
90
|
|
79
91
|
- size(), createCanvas(): default pixelDensity is same as current value
|
80
92
|
|
81
93
|
|
82
|
-
## [
|
94
|
+
## [v0.3.12] - 2020-12-10
|
83
95
|
|
84
96
|
- size() and createCanvas() take 'pixelDensity' parameter and default value is 1
|
85
97
|
|
86
98
|
|
87
|
-
## [
|
99
|
+
## [v0.3.11] - 2020-12-9
|
88
100
|
|
89
101
|
- add size(), createCanvas() and pixelDensity()
|
90
102
|
|
91
103
|
|
92
|
-
## [
|
104
|
+
## [v0.3.10] - 2020-12-1
|
93
105
|
|
94
106
|
- invert angle parameter value for arc() to fix compatibility to processing API
|
95
107
|
|
96
108
|
|
97
|
-
## [
|
109
|
+
## [v0.3.9] - 2020-11-30
|
98
110
|
|
99
111
|
- Graphics#beginDraw() can take block to call endDraw automatically
|
100
112
|
- Capture#start() always returns nil
|
101
113
|
- add delay_camera.rb
|
102
114
|
|
103
115
|
|
104
|
-
## [
|
116
|
+
## [v0.3.8] - 2020-11-27
|
105
117
|
|
106
118
|
- Capture#initialize() can take requestWidth, requestHeight and cameraName
|
107
119
|
- add Capture#width and Capture#height
|
108
120
|
|
109
121
|
|
110
|
-
## [
|
122
|
+
## [v0.3.7] - 2020-11-18
|
111
123
|
|
112
124
|
- add Capture class
|
113
125
|
- add log(), exp(), sqrt() and PI
|
@@ -116,13 +128,13 @@ RubySketch::GLSL
|
|
116
128
|
- fix error on calling image()
|
117
129
|
|
118
130
|
|
119
|
-
## [
|
131
|
+
## [v0.3.6] - 2020-08-02
|
120
132
|
|
121
133
|
- random() can take array or nothing
|
122
134
|
- use github actions to release gem package
|
123
135
|
|
124
136
|
|
125
|
-
## [
|
137
|
+
## [v0.3.5] - 2020-08-02
|
126
138
|
|
127
139
|
- add random()
|
128
140
|
- add sin(), cos(), tan(), asin(), acos(), atan() and atan2()
|
@@ -130,17 +142,17 @@ RubySketch::GLSL
|
|
130
142
|
- fix error on calling rotate()
|
131
143
|
|
132
144
|
|
133
|
-
## [
|
145
|
+
## [v0.3.4] - 2020-08-02
|
134
146
|
|
135
147
|
- delete Utility module
|
136
148
|
|
137
149
|
|
138
|
-
## [
|
150
|
+
## [v0.3.3] - 2020-08-01
|
139
151
|
|
140
152
|
- add Vector class
|
141
153
|
|
142
154
|
|
143
|
-
## [
|
155
|
+
## [v0.3.2] - 2020-07-22
|
144
156
|
|
145
157
|
- text() draws to the baseline by default
|
146
158
|
- add textWidth(), textAscent(), textDescent() and textAlign()
|
@@ -148,24 +160,24 @@ RubySketch::GLSL
|
|
148
160
|
- change initial background color to grayscale 0.8
|
149
161
|
|
150
162
|
|
151
|
-
## [
|
163
|
+
## [v0.3.1] - 2020-07-17
|
152
164
|
|
153
165
|
- add touchStarted(), touchEnded(), touchMoved() and touches()
|
154
166
|
- make all event handler drawable
|
155
167
|
- limit font max size to 256
|
156
168
|
|
157
169
|
|
158
|
-
## [
|
170
|
+
## [v0.3.0] - 2020-05-21
|
159
171
|
|
160
172
|
- add createGraphics()
|
161
173
|
|
162
174
|
|
163
|
-
## [
|
175
|
+
## [v0.2.7] - 2020-04-17
|
164
176
|
|
165
177
|
- add strokeCap() and strokeJoin()
|
166
178
|
|
167
179
|
|
168
|
-
## [
|
180
|
+
## [v0.2.6] - 2020-04-17
|
169
181
|
|
170
182
|
- push(), pushMatrix() and pushStyle() take block to automatic pop
|
171
183
|
- refine startup process
|
@@ -174,7 +186,7 @@ RubySketch::GLSL
|
|
174
186
|
- add loop(), noLoop() and redraw()
|
175
187
|
|
176
188
|
|
177
|
-
## [
|
189
|
+
## [v0.2.5] - 2020-03-29
|
178
190
|
|
179
191
|
- delete debug prints
|
180
192
|
- show unsupported image type
|
data/LICENSE
CHANGED
data/Rakefile
CHANGED
@@ -1,50 +1,25 @@
|
|
1
1
|
# -*- mode: ruby -*-
|
2
2
|
|
3
3
|
|
4
|
-
%w[../xot ../rucy ../rays ../reflex .]
|
4
|
+
%w[../xot ../rucy ../beeps ../rays ../reflex .]
|
5
5
|
.map {|s| File.expand_path "#{s}/lib", __dir__}
|
6
6
|
.each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
7
7
|
|
8
8
|
require 'rucy/rake'
|
9
9
|
|
10
|
-
require 'xot/
|
11
|
-
require 'rucy/
|
12
|
-
require '
|
13
|
-
require '
|
14
|
-
require '
|
10
|
+
require 'xot/extension'
|
11
|
+
require 'rucy/extension'
|
12
|
+
require 'beeps/extension'
|
13
|
+
require 'rays/extension'
|
14
|
+
require 'reflex/extension'
|
15
|
+
require 'processing/extension'
|
15
16
|
|
16
17
|
|
17
|
-
|
18
|
+
EXTENSIONS = [Xot, Rucy, Beeps, Rays, Reflex, Processing]
|
18
19
|
|
19
20
|
ENV['RDOC'] = 'yardoc --no-private'
|
20
21
|
|
22
|
+
default_tasks
|
21
23
|
test_ruby_extension
|
22
24
|
generate_documents
|
23
25
|
build_ruby_gem
|
24
|
-
|
25
|
-
task :default
|
26
|
-
|
27
|
-
|
28
|
-
namespace :version do
|
29
|
-
|
30
|
-
namespace :bump do
|
31
|
-
|
32
|
-
task :major do
|
33
|
-
update_and_tag_version 0
|
34
|
-
end
|
35
|
-
|
36
|
-
task :minor do
|
37
|
-
update_and_tag_version 1
|
38
|
-
end
|
39
|
-
|
40
|
-
task :patch do
|
41
|
-
update_and_tag_version 2
|
42
|
-
end
|
43
|
-
|
44
|
-
task :build do
|
45
|
-
update_and_tag_version 3
|
46
|
-
end
|
47
|
-
|
48
|
-
end# bump
|
49
|
-
|
50
|
-
end# version
|
data/RubyProcessing.podspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
Pod::Spec.new do |s|
|
5
5
|
s.name = "RubyProcessing"
|
6
|
-
s.version = File.
|
6
|
+
s.version = File.read(File.expand_path 'VERSION', __dir__)[/[\d\.]+/]
|
7
7
|
s.summary = "Yet Another Processing implementation for Ruby"
|
8
8
|
s.description = "Yet Another Processing implementation for Ruby"
|
9
9
|
s.license = "MIT"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.1
|
data/examples/breakout.rb
CHANGED
data/examples/camera.rb
CHANGED
data/examples/clock.rb
CHANGED
data/examples/delay_camera.rb
CHANGED
data/examples/hello.rb
CHANGED
data/examples/image.rb
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
.map {|s| File.expand_path "../../#{s}/lib", __dir__}
|
3
3
|
.each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
4
4
|
|
5
|
-
require 'processing
|
5
|
+
require 'processing'
|
6
|
+
using Processing
|
6
7
|
|
7
8
|
|
8
9
|
icon = loadImage 'https://xord.org/rubysketch/images/rubysketch128.png'
|
data/examples/shapes.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'digest/sha1'
|
3
|
+
require 'pathname'
|
4
|
+
require 'tmpdir'
|
5
|
+
require 'open-uri'
|
6
|
+
require 'reflex'
|
7
|
+
|
8
|
+
require 'processing/extension'
|
9
|
+
require 'processing/app'
|
10
|
+
require 'processing/window'
|
11
|
+
|
12
|
+
require 'processing/vector'
|
13
|
+
require 'processing/image'
|
14
|
+
require 'processing/font'
|
15
|
+
require 'processing/touch'
|
16
|
+
require 'processing/shader'
|
17
|
+
require 'processing/capture'
|
18
|
+
require 'processing/graphics_context'
|
19
|
+
require 'processing/graphics'
|
20
|
+
require 'processing/context'
|