grpc 1.11.1-x86-mingw32 → 1.12.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/etc/roots.pem +0 -33
- data/grpc_c.32.ruby +0 -0
- data/grpc_c.64.ruby +0 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +14 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +21 -0
- data/src/ruby/lib/grpc/2.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.2/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.3/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.4/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +7 -1
- data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +2 -5
- metadata +27 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e357fedac303304d476061d80e62d026e60d2a74e0eced613f57488a2a5f6e4
|
4
|
+
data.tar.gz: f270404f57ee4cb64ca254120eda213522d5bb197e07801d258899101274e13b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 934148bb40b7eedfcca89f7ab314e39aacc3d98a491d579264797b16794a43ec028acf6ae7db74df9de4196adb8634bd605483d1d8266df0b378f2448f7a950f
|
7
|
+
data.tar.gz: 262d635e8e6c31a22c2f35fc0676476265c1b5eed35a55c797e36fc8e957187e44bb6fd7e584cde202fc20b9a4b1811fc76fcdd5dc43e9645ee27b00243ee578
|
data/etc/roots.pem
CHANGED
@@ -3525,39 +3525,6 @@ AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ
|
|
3525
3525
|
5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
|
3526
3526
|
-----END CERTIFICATE-----
|
3527
3527
|
|
3528
|
-
# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.
|
3529
|
-
# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.
|
3530
|
-
# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5"
|
3531
|
-
# Serial: 156233699172481
|
3532
|
-
# MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e
|
3533
|
-
# SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb
|
3534
|
-
# SHA256 Fingerprint: 49:35:1b:90:34:44:c1:85:cc:dc:5c:69:3d:24:d8:55:5c:b2:08:d6:a8:14:13:07:69:9f:4a:f0:63:19:9d:78
|
3535
|
-
-----BEGIN CERTIFICATE-----
|
3536
|
-
MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UE
|
3537
|
-
BhMCVFIxDzANBgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxn
|
3538
|
-
aSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkg
|
3539
|
-
QS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2Eg
|
3540
|
-
SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAwODA3MDFaFw0yMzA0
|
3541
|
-
MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYD
|
3542
|
-
VQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8
|
3543
|
-
dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF
|
3544
|
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIB
|
3545
|
-
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCUZ4WWe60ghUEoI5RHwWrom
|
3546
|
-
/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537jVJp45wnEFPzpALFp/kR
|
3547
|
-
Gml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1mep5Fimh3
|
3548
|
-
4khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z
|
3549
|
-
5UNP9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0
|
3550
|
-
hO8EuPbJbKoCPrZV4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QID
|
3551
|
-
AQABo0IwQDAdBgNVHQ4EFgQUVpkHHtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/
|
3552
|
-
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJ5FdnsX
|
3553
|
-
SDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPoBP5yCccLqh0l
|
3554
|
-
VX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
|
3555
|
-
URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nf
|
3556
|
-
peYVhDfwwvJllpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CF
|
3557
|
-
Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW
|
3558
|
-
+qtB4Uu2NQvAmxU=
|
3559
|
-
-----END CERTIFICATE-----
|
3560
|
-
|
3561
3528
|
# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903
|
3562
3529
|
# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903
|
3563
3530
|
# Label: "Certinomis - Root CA"
|
data/grpc_c.32.ruby
CHANGED
Binary file
|
data/grpc_c.64.ruby
CHANGED
Binary file
|
@@ -138,6 +138,12 @@ grpc_ssl_server_credentials_create_with_options_type grpc_ssl_server_credentials
|
|
138
138
|
grpc_server_add_secure_http2_port_type grpc_server_add_secure_http2_port_import;
|
139
139
|
grpc_call_set_credentials_type grpc_call_set_credentials_import;
|
140
140
|
grpc_server_credentials_set_auth_metadata_processor_type grpc_server_credentials_set_auth_metadata_processor_import;
|
141
|
+
grpc_alts_credentials_client_options_create_type grpc_alts_credentials_client_options_create_import;
|
142
|
+
grpc_alts_credentials_server_options_create_type grpc_alts_credentials_server_options_create_import;
|
143
|
+
grpc_alts_credentials_client_options_add_target_service_account_type grpc_alts_credentials_client_options_add_target_service_account_import;
|
144
|
+
grpc_alts_credentials_options_destroy_type grpc_alts_credentials_options_destroy_import;
|
145
|
+
grpc_alts_credentials_create_type grpc_alts_credentials_create_import;
|
146
|
+
grpc_alts_server_credentials_create_type grpc_alts_server_credentials_create_import;
|
141
147
|
grpc_raw_byte_buffer_create_type grpc_raw_byte_buffer_create_import;
|
142
148
|
grpc_raw_compressed_byte_buffer_create_type grpc_raw_compressed_byte_buffer_create_import;
|
143
149
|
grpc_byte_buffer_copy_type grpc_byte_buffer_copy_import;
|
@@ -208,6 +214,7 @@ gpr_cpu_num_cores_type gpr_cpu_num_cores_import;
|
|
208
214
|
gpr_cpu_current_cpu_type gpr_cpu_current_cpu_import;
|
209
215
|
gpr_log_severity_string_type gpr_log_severity_string_import;
|
210
216
|
gpr_log_type gpr_log_import;
|
217
|
+
gpr_should_log_type gpr_should_log_import;
|
211
218
|
gpr_log_message_type gpr_log_message_import;
|
212
219
|
gpr_set_log_verbosity_type gpr_set_log_verbosity_import;
|
213
220
|
gpr_log_verbosity_init_type gpr_log_verbosity_init_import;
|
@@ -379,6 +386,12 @@ void grpc_rb_load_imports(HMODULE library) {
|
|
379
386
|
grpc_server_add_secure_http2_port_import = (grpc_server_add_secure_http2_port_type) GetProcAddress(library, "grpc_server_add_secure_http2_port");
|
380
387
|
grpc_call_set_credentials_import = (grpc_call_set_credentials_type) GetProcAddress(library, "grpc_call_set_credentials");
|
381
388
|
grpc_server_credentials_set_auth_metadata_processor_import = (grpc_server_credentials_set_auth_metadata_processor_type) GetProcAddress(library, "grpc_server_credentials_set_auth_metadata_processor");
|
389
|
+
grpc_alts_credentials_client_options_create_import = (grpc_alts_credentials_client_options_create_type) GetProcAddress(library, "grpc_alts_credentials_client_options_create");
|
390
|
+
grpc_alts_credentials_server_options_create_import = (grpc_alts_credentials_server_options_create_type) GetProcAddress(library, "grpc_alts_credentials_server_options_create");
|
391
|
+
grpc_alts_credentials_client_options_add_target_service_account_import = (grpc_alts_credentials_client_options_add_target_service_account_type) GetProcAddress(library, "grpc_alts_credentials_client_options_add_target_service_account");
|
392
|
+
grpc_alts_credentials_options_destroy_import = (grpc_alts_credentials_options_destroy_type) GetProcAddress(library, "grpc_alts_credentials_options_destroy");
|
393
|
+
grpc_alts_credentials_create_import = (grpc_alts_credentials_create_type) GetProcAddress(library, "grpc_alts_credentials_create");
|
394
|
+
grpc_alts_server_credentials_create_import = (grpc_alts_server_credentials_create_type) GetProcAddress(library, "grpc_alts_server_credentials_create");
|
382
395
|
grpc_raw_byte_buffer_create_import = (grpc_raw_byte_buffer_create_type) GetProcAddress(library, "grpc_raw_byte_buffer_create");
|
383
396
|
grpc_raw_compressed_byte_buffer_create_import = (grpc_raw_compressed_byte_buffer_create_type) GetProcAddress(library, "grpc_raw_compressed_byte_buffer_create");
|
384
397
|
grpc_byte_buffer_copy_import = (grpc_byte_buffer_copy_type) GetProcAddress(library, "grpc_byte_buffer_copy");
|
@@ -449,6 +462,7 @@ void grpc_rb_load_imports(HMODULE library) {
|
|
449
462
|
gpr_cpu_current_cpu_import = (gpr_cpu_current_cpu_type) GetProcAddress(library, "gpr_cpu_current_cpu");
|
450
463
|
gpr_log_severity_string_import = (gpr_log_severity_string_type) GetProcAddress(library, "gpr_log_severity_string");
|
451
464
|
gpr_log_import = (gpr_log_type) GetProcAddress(library, "gpr_log");
|
465
|
+
gpr_should_log_import = (gpr_should_log_type) GetProcAddress(library, "gpr_should_log");
|
452
466
|
gpr_log_message_import = (gpr_log_message_type) GetProcAddress(library, "gpr_log_message");
|
453
467
|
gpr_set_log_verbosity_import = (gpr_set_log_verbosity_type) GetProcAddress(library, "gpr_set_log_verbosity");
|
454
468
|
gpr_log_verbosity_init_import = (gpr_log_verbosity_init_type) GetProcAddress(library, "gpr_log_verbosity_init");
|
@@ -389,6 +389,24 @@ extern grpc_call_set_credentials_type grpc_call_set_credentials_import;
|
|
389
389
|
typedef void(*grpc_server_credentials_set_auth_metadata_processor_type)(grpc_server_credentials* creds, grpc_auth_metadata_processor processor);
|
390
390
|
extern grpc_server_credentials_set_auth_metadata_processor_type grpc_server_credentials_set_auth_metadata_processor_import;
|
391
391
|
#define grpc_server_credentials_set_auth_metadata_processor grpc_server_credentials_set_auth_metadata_processor_import
|
392
|
+
typedef grpc_alts_credentials_options*(*grpc_alts_credentials_client_options_create_type)();
|
393
|
+
extern grpc_alts_credentials_client_options_create_type grpc_alts_credentials_client_options_create_import;
|
394
|
+
#define grpc_alts_credentials_client_options_create grpc_alts_credentials_client_options_create_import
|
395
|
+
typedef grpc_alts_credentials_options*(*grpc_alts_credentials_server_options_create_type)();
|
396
|
+
extern grpc_alts_credentials_server_options_create_type grpc_alts_credentials_server_options_create_import;
|
397
|
+
#define grpc_alts_credentials_server_options_create grpc_alts_credentials_server_options_create_import
|
398
|
+
typedef void(*grpc_alts_credentials_client_options_add_target_service_account_type)(grpc_alts_credentials_options* options, const char* service_account);
|
399
|
+
extern grpc_alts_credentials_client_options_add_target_service_account_type grpc_alts_credentials_client_options_add_target_service_account_import;
|
400
|
+
#define grpc_alts_credentials_client_options_add_target_service_account grpc_alts_credentials_client_options_add_target_service_account_import
|
401
|
+
typedef void(*grpc_alts_credentials_options_destroy_type)(grpc_alts_credentials_options* options);
|
402
|
+
extern grpc_alts_credentials_options_destroy_type grpc_alts_credentials_options_destroy_import;
|
403
|
+
#define grpc_alts_credentials_options_destroy grpc_alts_credentials_options_destroy_import
|
404
|
+
typedef grpc_channel_credentials*(*grpc_alts_credentials_create_type)(const grpc_alts_credentials_options* options);
|
405
|
+
extern grpc_alts_credentials_create_type grpc_alts_credentials_create_import;
|
406
|
+
#define grpc_alts_credentials_create grpc_alts_credentials_create_import
|
407
|
+
typedef grpc_server_credentials*(*grpc_alts_server_credentials_create_type)(const grpc_alts_credentials_options* options);
|
408
|
+
extern grpc_alts_server_credentials_create_type grpc_alts_server_credentials_create_import;
|
409
|
+
#define grpc_alts_server_credentials_create grpc_alts_server_credentials_create_import
|
392
410
|
typedef grpc_byte_buffer*(*grpc_raw_byte_buffer_create_type)(grpc_slice* slices, size_t nslices);
|
393
411
|
extern grpc_raw_byte_buffer_create_type grpc_raw_byte_buffer_create_import;
|
394
412
|
#define grpc_raw_byte_buffer_create grpc_raw_byte_buffer_create_import
|
@@ -599,6 +617,9 @@ extern gpr_log_severity_string_type gpr_log_severity_string_import;
|
|
599
617
|
typedef void(*gpr_log_type)(const char* file, int line, gpr_log_severity severity, const char* format, ...) GPR_PRINT_FORMAT_CHECK(4, 5);
|
600
618
|
extern gpr_log_type gpr_log_import;
|
601
619
|
#define gpr_log gpr_log_import
|
620
|
+
typedef int(*gpr_should_log_type)(gpr_log_severity severity);
|
621
|
+
extern gpr_should_log_type gpr_should_log_import;
|
622
|
+
#define gpr_should_log gpr_should_log_import
|
602
623
|
typedef void(*gpr_log_message_type)(const char* file, int line, gpr_log_severity severity, const char* message);
|
603
624
|
extern gpr_log_message_type gpr_log_message_import;
|
604
625
|
#define gpr_log_message gpr_log_message_import
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -32,7 +32,13 @@ $PROTOC -I . \
|
|
32
32
|
--plugin=$PLUGIN
|
33
33
|
|
34
34
|
$PROTOC -I . \
|
35
|
-
src/proto/grpc/
|
35
|
+
src/proto/grpc/core/stats.proto \
|
36
|
+
--grpc_out=src/ruby/qps \
|
37
|
+
--ruby_out=src/ruby/qps \
|
38
|
+
--plugin=$PLUGIN
|
39
|
+
|
40
|
+
$PROTOC -I . \
|
41
|
+
src/proto/grpc/testing/{messages,payloads,stats,benchmark_service,report_qps_scenario_service,worker_service,control}.proto \
|
36
42
|
--grpc_out=src/ruby/qps \
|
37
43
|
--ruby_out=src/ruby/qps \
|
38
44
|
--plugin=$PLUGIN
|
@@ -15,16 +15,13 @@
|
|
15
15
|
require 'open3'
|
16
16
|
require 'tmpdir'
|
17
17
|
|
18
|
-
def debug_mode?
|
19
|
-
!ENV['CONFIG'].nil? && ENV['CONFIG'] == 'dbg'
|
20
|
-
end
|
21
|
-
|
22
18
|
describe 'Package with underscore protobuf code generation' do
|
23
19
|
it 'should have the same content as created by code generation' do
|
24
20
|
root_dir = File.join(File.dirname(__FILE__), '..', '..', '..', '..', '..')
|
25
21
|
pb_dir = File.join(root_dir, 'src', 'ruby', 'spec', 'pb')
|
26
22
|
|
27
|
-
|
23
|
+
fail 'CONFIG env variable unexpectedly unset' unless ENV['CONFIG']
|
24
|
+
bins_sub_dir = ENV['CONFIG']
|
28
25
|
bins_dir = File.join(root_dir, 'bins', bins_sub_dir)
|
29
26
|
|
30
27
|
plugin = File.join(bins_dir, 'grpc_ruby_plugin')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- gRPC Authors
|
@@ -348,39 +348,39 @@ signing_key:
|
|
348
348
|
specification_version: 4
|
349
349
|
summary: GRPC system in Ruby
|
350
350
|
test_files:
|
351
|
-
- src/ruby/spec/
|
352
|
-
- src/ruby/spec/
|
353
|
-
- src/ruby/spec/
|
351
|
+
- src/ruby/spec/spec_helper.rb
|
352
|
+
- src/ruby/spec/channel_connection_spec.rb
|
353
|
+
- src/ruby/spec/server_spec.rb
|
354
|
+
- src/ruby/spec/support/services.rb
|
355
|
+
- src/ruby/spec/support/helpers.rb
|
356
|
+
- src/ruby/spec/channel_spec.rb
|
357
|
+
- src/ruby/spec/server_credentials_spec.rb
|
358
|
+
- src/ruby/spec/generic/rpc_server_pool_spec.rb
|
354
359
|
- src/ruby/spec/generic/rpc_desc_spec.rb
|
355
|
-
- src/ruby/spec/generic/
|
360
|
+
- src/ruby/spec/generic/active_call_spec.rb
|
361
|
+
- src/ruby/spec/generic/server_interceptors_spec.rb
|
356
362
|
- src/ruby/spec/generic/service_spec.rb
|
363
|
+
- src/ruby/spec/generic/rpc_server_spec.rb
|
357
364
|
- src/ruby/spec/generic/client_stub_spec.rb
|
358
|
-
- src/ruby/spec/generic/server_interceptors_spec.rb
|
359
365
|
- src/ruby/spec/generic/client_interceptors_spec.rb
|
360
|
-
- src/ruby/spec/generic/
|
361
|
-
- src/ruby/spec/generic/rpc_server_pool_spec.rb
|
362
|
-
- src/ruby/spec/server_spec.rb
|
366
|
+
- src/ruby/spec/generic/interceptor_registry_spec.rb
|
363
367
|
- src/ruby/spec/client_server_spec.rb
|
364
|
-
- src/ruby/spec/
|
365
|
-
- src/ruby/spec/
|
368
|
+
- src/ruby/spec/time_consts_spec.rb
|
369
|
+
- src/ruby/spec/google_rpc_status_utils_spec.rb
|
370
|
+
- src/ruby/spec/compression_options_spec.rb
|
371
|
+
- src/ruby/spec/error_sanity_spec.rb
|
372
|
+
- src/ruby/spec/call_credentials_spec.rb
|
373
|
+
- src/ruby/spec/channel_credentials_spec.rb
|
374
|
+
- src/ruby/spec/pb/health/checker_spec.rb
|
366
375
|
- src/ruby/spec/pb/package_with_underscore/service.proto
|
376
|
+
- src/ruby/spec/pb/package_with_underscore/data.proto
|
377
|
+
- src/ruby/spec/pb/package_with_underscore/checker_spec.rb
|
367
378
|
- src/ruby/spec/pb/duplicate/codegen_spec.rb
|
368
|
-
- src/ruby/spec/pb/health/checker_spec.rb
|
369
|
-
- src/ruby/spec/server_credentials_spec.rb
|
370
|
-
- src/ruby/spec/channel_spec.rb
|
371
|
-
- src/ruby/spec/support/helpers.rb
|
372
|
-
- src/ruby/spec/support/services.rb
|
373
|
-
- src/ruby/spec/call_spec.rb
|
374
|
-
- src/ruby/spec/error_sanity_spec.rb
|
375
|
-
- src/ruby/spec/spec_helper.rb
|
376
|
-
- src/ruby/spec/testdata/server1.pem
|
377
379
|
- src/ruby/spec/testdata/client.pem
|
380
|
+
- src/ruby/spec/testdata/ca.pem
|
378
381
|
- src/ruby/spec/testdata/server1.key
|
379
|
-
- src/ruby/spec/testdata/README
|
380
382
|
- src/ruby/spec/testdata/client.key
|
381
|
-
- src/ruby/spec/testdata/
|
382
|
-
- src/ruby/spec/
|
383
|
-
- src/ruby/spec/
|
384
|
-
- src/ruby/spec/
|
385
|
-
- src/ruby/spec/google_rpc_status_utils_spec.rb
|
386
|
-
- src/ruby/spec/compression_options_spec.rb
|
383
|
+
- src/ruby/spec/testdata/server1.pem
|
384
|
+
- src/ruby/spec/testdata/README
|
385
|
+
- src/ruby/spec/call_spec.rb
|
386
|
+
- src/ruby/spec/client_auth_spec.rb
|